FB session-handoff
Write a handoff document so a fresh session or another agent can pick up exactly where this one left off: goal, current state, decisions, next steps and the skills to load, referencing existing files instead of copying them, with secrets redacted before saving. Use whenever the user is ending a session, switching machines, running low on context, or asks for a handoff, a handoff doc, a 'pick up where we left off' summary, or to compact the conversation for next time. Saves to a location the user picks on first run (OS temp, home folder or per-project .handoff/) and can auto-load the latest handoff at the next session start.
Promises to compact conversations into handoff documents for another agent, save to custom locations, and auto-load on next session start. In reality—blocked due to critical vulnerability: unprotected secrets found in the code. Quality scores 95, but process score sits at 70—not production-ready. Among 15 files and 7 scripts, 6 medium and low-severity issues flagged. Model never ran, sandbox untested.
Don't install. The concept works, but this skill is a security liability as-is. Needs a rewrite before it touches your projects.
Write a handoff document so a fresh session or another agent can pick up exactly where this one left off: goal, current state, decisions, next steps and the…
As a process B 70/100 · Nearly there — weak spots: inputs and preconditions, running it twice
What is at stake
The skill contains fragments that, in the wrong hands, cost money or data. Below: what the installer risks and what the author should do.
The files contain someone else's key or token. If it is live, your agent will call third-party services under a stranger's identity; if it was revoked, the skill's scripts simply fail. Such a key often arrives with the author's whole workspace, personal data included.
The key is visible to everyone who downloaded the skill and has likely been copied by catalog-scanning bots already. Revoke it now, check bills and access logs, then reissue.
How to improve
- Remove the critical guard findings (secrets, dangerous commands, hidden instructions): while they stand the skill is blocked and cannot grade above F.
- Your own cases (evals/evals.json, 4–6 real requests with expected answers): the full check would then run those instead of a model-drafted suite.
- A spec.yaml with trigger phrases and assertions — a behaviour contract for CI; `skilltest init` writes a template.
Guard findings · 7
-
critical Secrets in code
secret-github-tokenscripts/redaction_linter.py:254GitHub token (quoted — discussed, not commanded)"Token: ghp_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
quoted
Medium and low: 6
-
medium Secrets in code
secret-private-keyreferences/redaction_checklist.md:19Private key material (detector / deny-list definition; key header without key body; documentation table row)| Private key block | `-----BEGIN PRIVATE KEY----- …
detectorheader onlytable -
low Secrets in code
secret-aws-keyreferences/redaction_checklist.md:11AWS access key ID (placeholder value)| AWS access key | `AKIA…PLE` | high |
placeholder -
low Secrets in code
secret-aws-keyreferences/redaction_checklist.md:63AWS access key ID (placeholder value)Example key: AKIA…PLE <!-- handoff:allow secret -->
placeholder -
low Secrets in code
secret-aws-keyscripts/redaction_linter.py:253AWS access key ID (placeholder value)"API key: AKIA…PLE\n"
placeholder -
low Secrets in code
secret-password-literalscripts/redaction_linter.py:255Hard-coded password / key literal (may be an example) (quoted — discussed, not commanded)"PASSWORD=hunt…ret\n"
quoted -
low Secrets in code
secret-aws-keyscripts/redaction_linter.py:258AWS access key ID (placeholder value)"Allowed: AKIA…PLE <!-- handoff:allow secret -->\n"
placeholder
Files scanned: 15. Evidence is masked. Grey chips explain why severity was lowered.
Against the Agent Skills spec
✓ No remarks against the Agent Skills spec
Process rating: all ten parameters 70/100
- 0Inputs and preconditions. Does not say what the process needs to start
- 30Running it twice. 6 mutating operations with no state check
- 60Tools and files. Uses tools (read) that frontmatter does not declare
- 60Result and completion. Output format stated, no completion criterion
- 70When it triggers. States when to use, but not when not to
- 100Steps. 29 steps
- 100Failures and branches. 3 branches, has a failure section
- 100Consistency. Name and required fields are in place
- 100Execution cost. Instruction body is 2202 tokens
- 100Progress reporting. Reports progress
- medium Safety rules and hard prohibitions inside a skill: they belong in the system prompt, here they protect nothing
- low 15 top-level sections: this looks like several domains in one skill
Everything here is measured from the skill text rather than judged by a model, so the numbers are checkable. A parameter weighs more when it is a more common reason for the process to stall.
Quality signals
- +5Description has no quoted example phrases that should trigger the skill
- +4Description does not say when NOT to use the skill (false activations)
- +2Single-language instructions
- +3Description length 631: enough signal without eating the budget
- +4Structure: 20 headings
- +3Step-by-step instructions: 29 items
- +3Output format is stated explicitly
- +4Has examples (5 code blocks)
- +4Reference files are cited in the instructions (5 of 5)
- +3All 7 scripts are documented
- +1License stated
Quality base 70; lint remarks subtract, signals add up to 100. Result: 95.