Borrowing it
Nothing to install: this file belongs to jnarowski/agentcmd. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/jnarowski/agentcmd/main/.claude/commands/refresh-spec-index.mdgit clone --depth 1 https://github.com/jnarowski/agentcmdWrote 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/commands/jnarowski/agentcmd/refresh-spec-index)<a href="https://agentmods.dev/commands/jnarowski/agentcmd/refresh-spec-index"><img src="https://agentmods.dev/badge/commands/jnarowski/agentcmd/refresh-spec-index/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/commands/jnarowski/agentcmd/refresh-spec-index"><img src="https://agentmods.dev/badge/commands/jnarowski/agentcmd/refresh-spec-index.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.00007 | $0.00967 |
| Opus 5.5 | $0.00003 | $0.00387 |
| Sonnet 5.5 | $0.00001 | $0.00193 |
| Haiku 4.5 | $0.00001 | $0.00097 |
Grade A, and why
refresh-spec-index 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 2mo 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 — 113 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Refresh Spec Index
Scans spec folders and reconciles with index.json, removing orphaned entries, adding missing specs, and updating metadata.
Instructions
- Scan all spec folders in backlog/todo/done
- Compare to index.json entries
- Remove entries for deleted folders
- Add entries for untracked folders
- Update status/timestamps from spec.md files
- Report all changes made
Workflow
-
Scan filesystem for spec files:
- Use
find .agent/specs/{backlog,todo,in-progress,done} -maxdepth 2 -type f -name "*.md" - Extract spec IDs from folder names (pattern:
{id}-{feature-name}) - Build list of filesystem specs with their file paths (relative to
.agent/specs/)
- Use
-
Load and parse index.json:
- Read
.agent/specs/index.json - Parse JSON structure
- Read
-
Identify differences:
- Orphaned entries: Spec ID in index.json but folder doesn't exist at
path - Missing entries: Folder exists but spec ID not in index.json
- Path mismatches: Spec moved to different folder (status derived from folder location)
- Orphaned entries: Spec ID in index.json but folder doesn't exist at
-
Update index.json:
- Remove orphaned entries (folder deleted)
- Add missing entries with default values
- Update path and status when spec moved to different folder (folder location is source of truth for status)
- Extract and sync complexity fields from spec.md for each spec:
totalComplexity: Parse from**Total Complexity**: X pointsphaseCount: Parse from**Phases**: NtaskCount: Parse from**Tasks**: N- If fields not found in spec.md, omit from index.json (optional fields)
- Preserve
lastIdfield - Write back to file
-
Report changes:
- Show removed entries (count + ID + path)
- Show added entries (count + ID + path + status)
- Show updated entries (count + ID + old status → new status)
- Show total specs after refresh
Status from Folder Location
The folder location is the source of truth for status. Do NOT use the **Status** field from spec.md for index.json status.
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.
- 2mo ago First seen · 113 lines · 7 tokens per session scan A 6494c9646058
refresh-spec-index is a command published in the GitHub repository jnarowski/agentcmd (18 stars, last pushed 10mo ago), licensed MIT. It adds 7 tokens to every session and 967 once invoked, about $0.0000 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-09-01.
refresh-spec-index compared with commands from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| refresh-spec-indexjnarowski/agentcmd | Command | 18 | 10mo ago | MIT | A | 7 | Claude Code |
| checklistgithub/spec-kit | Command | 148k | yesterday | MIT | A | 13 | Claude Code |
| clarifygithub/spec-kit | Command | 148k | yesterday | MIT | A | 27 | Claude Code |
| specifygithub/spec-kit | Command | 148k | yesterday | MIT | A | 13 | Claude Code |
| analyzegithub/spec-kit | Command | 148k | yesterday | MIT | A | 26 | Claude Code |
| convergegithub/spec-kit | Command | 148k | yesterday | MIT | A | 35 | Claude Code |
| implementgithub/spec-kit | Command | 148k | yesterday | MIT | A | 14 | Claude Code |