SpecStory is a local-first tool that records and indexes conversations with AI coding assistants so developers can search, reuse, and share their solutions. It is for preserving coding decisions, snippets, and other knowledge across projects and development tools. Its catalogue skills and commands process saved sessions into reusable agent skills and connect the workflow to coding agents.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add specstoryai/getspecstory --skill workthreadsgit clone --depth 1 https://github.com/specstoryai/getspecstoryWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/specstoryai/getspecstory/workthreads)<a href="https://agentmods.dev/skills/specstoryai/getspecstory/workthreads"><img src="https://agentmods.dev/badge/skills/specstoryai/getspecstory/workthreads/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/specstoryai/getspecstory/workthreads"><img src="https://agentmods.dev/badge/skills/specstoryai/getspecstory/workthreads.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Tool Misuse · line 35 Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).Fix: Validate all tool parameters against an allowlist. Reject dangerous parameter values (shell=True, --force, -rf /) and use safe defaults.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00126 | $0.01274 |
| Opus 5.5 | $0.00050 | $0.00510 |
| Sonnet 5.5 | $0.00025 | $0.00255 |
| Haiku 4.5 | $0.00013 | $0.00127 |
Grade A, and why
workthreads scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 89 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Workthreads
A lead needs a weekly answer across the team's repos: what work happened this week, what got
finished, and what is still open and needs a next step. Workthreads produces that rollup
from SpecStory histories - the .specstory/history transcripts your coding agents already write.
It reports lines of work and their lifecycle (new / open / recently closed).
A deterministic engine (scripts/workthreads.mjs threads) does the retrieval, clustering, and
classification; you do the synthesis - you turn its evidence into the lead's weekly report.
Do not try to read raw transcripts yourself; they can be hundreds of thousands of lines. Run the
engine and write the rollup from its output.
This skill is harness-portable (agentskills.io format). Where it names a specific tool
(e.g. AskUserQuestion), treat that as "use your harness's equivalent; fall back to plain chat."
How the engine splits the work
- The engine groups the window's beats by project and clusters them into threads (a line
of work that can span several sessions). It assigns each thread one lifecycle status relative
to today:
- new - first activity within the last 7 days.
- open - unresolved, still active (the open loops).
- closed - latest outcome was success and the thread has gone quiet; flagged reverted
when a beat ran a rollback command (
git revert/git reset --hard/git checkout -- ...).
- Output is deterministic (stable sort, no wall-clock timestamps in the body), so two runs on the same corpus are byte-identical.
Default flow: the weekly rollup
-
Index the corpus into workthreads' own DB. Point at the team's repos and build/update it:
node "${CLAUDE_SKILL_DIR}/scripts/workthreads.mjs" index --projects <parent-of-repos> --db <db> # or a single tree: --scan <root> or a single history dir: --dir <dir> -
Run
threadscross-project for the last 7 days and capture the evidence:node "${CLAUDE_SKILL_DIR}/scripts/workthreads.mjs" threads --db <db> --days 7 # human digest node "${CLAUDE_SKILL_DIR}/scripts/workthreads.mjs" threads --db <db> --days 7 --json # machine-readableThe digest prints, per project, three sections in order - New, Open, Recently closed - each thread with its evidence refs (
path:line), last-activity date, status, and arevertedmarker.--jsonemits an array of threads (project,status,reverted, the files touched, last-activity date).
What ships with it
18 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- docs/2026-06-24-WORKTHREADS-AS-BUILT.md 5.5 KB
- fixtures/threads-bar/.specstory/history/2026-06-06_09-00-00Z-scaffold-search-index.md 282 B
- fixtures/threads-bar/.specstory/history/2026-06-20_11-00-00Z-fix-search-index.md 354 B
- fixtures/threads-bar/.specstory/history/2026-06-21_15-00-00Z-start-notif-badge.md 273 B
- fixtures/threads-foo/.specstory/history/2026-06-02_09-00-00Z-begin-checkout-flow.md 503 B
- fixtures/threads-foo/.specstory/history/2026-06-09_10-00-00Z-finish-checkout-flow.md 550 B
- fixtures/threads-foo/.specstory/history/2026-06-12_14-00-00Z-payment-retry-rollback.md 905 B
- install.sh 1.1 KB runs code
- package.json 304 B
- README.md 3.2 KB
- scripts/lib/db.mjs 3.8 KB runs code
- scripts/lib/discover.mjs 3.3 KB runs code
- scripts/lib/indexer.mjs 7.4 KB runs code
- scripts/lib/parse.mjs 10 KB runs code
- scripts/lib/patterns.mjs 14 KB runs code
- scripts/lib/threads.mjs 12 KB runs code
- scripts/workthreads.mjs 3.3 KB runs code
- tests/threads.test.mjs 8.4 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 89 lines · 126 tokens per session scan A 0c74ebfbe38f
workthreads is a skill published in the GitHub repository specstoryai/getspecstory (1,357 stars, last pushed today), licensed Apache-2.0. It adds 126 tokens to every session and 1,274 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
gh-issues
Use when creating, triaging, or commenting on GitHub issues for the Kilo VS Code extension or JetBrains plugin via gh. Covers issue templates, project board assignment, title conventions, and required gh scopes.
backseat-driver-testing
Testing strategies for Calva Backseat Driver MCP tools. Use when: Testing Backseat Driver, validating tool updates, testing structural editing workflows, verifying REPL evaluation with who-tracking, testing shadow-cljs runtime discovery and targeting, testing output log filtering, testing load-file tool, smoke testing…
backseat-driver
Effective use of the Backseat Driver extension and its tools for Clojure interactive programming. Use when: working in Clojure (including all dialects and runtimes) project, be it reading, planning, developing, or evaluating code in the REPL, looking up function documentation or ClojureDocs examples, choosing REPL…
editing-clojure-files
Structural editing of Clojure files using Backseat Driver tools. Use when editing or planning edits: creating/adding/inserting/replacing/deleting top-level forms, fixing bracket balance, resolving indentation issues, planning multi-edit sequences, recovering from failed edits, or working with Rich Comment Forms in…
maintenance-create-ticket-on-jira
Create or update a Jira ticket for a workload maintenance upgrade, based on maintenance upgrade check files.
github-cli
Perform GitHub operations on GitHub using the gh CLI. Use for issues, pull requests, pipelines, repositories, and project management. ALSO use this skill when asked to review a GitHub PR — when a GitHub PR URL or PR ID is provided, use gh to fetch and review the diff instead of the code-review skill.