skills/pin-wrap-up/SKILL.md
Use at the end of a work session to review the WHOLE session and record entities worth pinning. This is the manual, deliberate complete-sweep review — NOT an automated nudge. Triggers on "wrap up", "wrap-up", "session wrap", "end of session", "what should I pin".
npx skillsauth add toongri/oh-my-toong-playground pin-wrap-upInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Conduct a whole-session review to identify entities worth recording in the pins knowledge graph.
This is a deliberate, manual sweep. It is NOT automatic. You invoke it when a session is winding down and you want to surface knowledge before context is lost.
Scan back over the full session — every discovery, decision, external reference, code location, person named, and architectural fact that surfaced. Ask: "Would a future me (or a colleague) benefit from being able to find this in 10 seconds?"
Apply the recording rubric from the pin-record skill, using the worth/not-worth table below to decide what makes the cut.
Discard noise: transient commands, intermediate debug outputs, things that are already obvious from the codebase.
List entities you propose to record. For each, briefly state:
Show this list to the user before recording. Confirm or prune before writing anything.
For each confirmed candidate, pipe the JSON-serialized entity to the deployed script:
printf '%s' "$ENTITY_JSON" | bun "${CLAUDE_SKILL_DIR}/scripts/wrap-up.ts"
The script validates first. On FAIL it prints {"valid":false,"reason":"...","message":"..."} and stops — record is never called. On PASS it records and prints {"id":"...","status":"recorded"}.
Build the entity with the required body sections and complete frontmatter — see the pin-record skill for the body structure and full field reference.
If the script exits 0 and prints "status":"recorded", the pin was written.
After recording, state:
validate() returned valid: false) with the reason, so the user can decide whether to fix and retryIf the manifest is git-managed (git: true), commit the recorded pin file(s).
| Worth pinning | Not worth pinning | |---------------|-------------------| | External SSOT located (URL, file, person) | Transient debug output | | Ground truth pinned in code (file:line) | Things obvious from reading the code | | Decision made that will constrain future work | Intermediate hypothesis that was disproved | | Person named as authority on a topic | Generic "check the docs" type notes | | Architecture fact that took effort to find | Information that will be stale within hours |
Do NOT record everything. A knowledge graph full of low-value entries degrades retrieval. Quality over quantity — 2 high-quality pins beat 10 noisy ones.
documentation
Use when initializing the pins knowledge graph for the first time in a project. Guides the user through creating pins.yaml (the storage manifest). Triggers on "setup pins", "initialize pins", "create pins.yaml", "first-run pins".
testing
Use when you need to record a single pin entity to the knowledge graph. Invokes lib/pins record() to validate and write a canonical .md file. Triggers on "record pin", "pin this", "save this as a pin".
databases
Use when looking up pins by type, tags, or source. Drives lib/pins/query.ts to retrieve matching pin entries from the knowledge graph. Supersedes the legacy manual ls+frontmatter procedure.
testing
Use when checking pin graph health. Runs lib/pins/audit to detect dangling relations, duplicates, invalid entities, stale entries, and orphans, then presents a ranked report.