Notre avis
Met à jour de manière déterministe les champs status, last_flow et updated_at dans le fichier .runs/index.json.
Points forts
- Écritures déterministes avec diffs stables et triés
- Idempotent : appels répétés produisent le même résultat
- Surface minimale : ne modifie que trois champs, évitant les conflits
Limites
- Ne peut pas créer le fichier index.json (doit déjà exister)
- Réservé aux agents de nettoyage et de préparation spécifiques
Lorsque vous devez mettre à jour l'état d'une run dans .runs/index.json après une étape de workflow.
Lorsque vous devez créer l'index ou modifier d'autres champs comme canonical_key ou issue_number.
Analyse de sécurité
SûrSkill only updates a JSON file with status, last_flow, and updated_at. Commands are restricted to a specific shim script and do not involve network exfiltration, deletion, or disabling safety features.
Aucun point d'attention détecté
Exemples
Update the run 'feat-auth' status to VERIFIED and set last_flow to signal in .runs/index.json.Set status to COMPLETED and last_flow to deploy for all runs where status is RUNNING in the index.Re-apply status VERIFIED and last_flow signal on run 'fix-typo' — ensure no duplicate entries.name: runs-index description: "Update index.json status. Use for: upsert index.json, update status/last_flow/updated_at. Deterministic writes - stable diffs, no creation. Use only in run-prep and *-cleanup agents. Invoke via bash .claude/scripts/demoswarm.sh index upsert-status." allowed-tools: Bash, Read, Write
Runs Index Skill
Deterministic updates to .runs/index.json. Write-bearing but with minimal surface.
Invocation
Always invoke via the shim:
bash .claude/scripts/demoswarm.sh index upsert-status [options]
Do not set PATH or call helpers directly. The shim handles resolution.
Operating Invariants
Repo root only
- Assume working directory is repo root.
- All paths are repo-root-relative.
Minimal ownership
This skill only updates:
statuslast_flowupdated_at
Other fields (canonical_key, issue_number, pr_number, etc.) are owned by run-prep, signal-run-prep, and gh-issue-manager.
Stable diffs
- Upsert by
run_id(update in place, not append) - Preserve existing ordering
- Output is sorted for stable git diffs
Allowed Users
Only these agents may use this skill:
run-prepsignal-run-prepsignal-cleanupplan-cleanupbuild-cleanupgate-cleanupdeploy-cleanupwisdom-cleanup
Command Reference
| Command | Purpose |
| --------------------- | ------------------------------- |
| index upsert-status | Update run status in index.json |
Quick Example
# Update index after signal cleanup
bash .claude/scripts/demoswarm.sh index upsert-status \
--index ".runs/index.json" \
--run-id "feat-auth" \
--status "VERIFIED" \
--last-flow "signal" \
--updated-at "$(bash .claude/scripts/demoswarm.sh time now)"
# stdout: ok
Contract Rules
- stdout:
okon success, error message on failure - exit code:
0on success, non-zero on failure - Idempotent: Running twice with same args produces same result
- No creation: If
.runs/index.jsondoesn't exist, fail (run-prep owns creation)
Index Schema Reference
{
"version": 1,
"runs": [
{
"run_id": "feat-auth",
"canonical_key": "gh-456",
"task_key": "feat-auth",
"task_title": "Add OAuth2 login",
"issue_number": 456,
"pr_number": null,
"updated_at": "2025-12-11T22:15:00Z",
"status": "VERIFIED",
"last_flow": "signal"
}
]
}
This skill only updates: status, last_flow, updated_at.
For Agent Authors
In cleanup agents:
- Use
runs-indexfor index updates (no inline jq) - Handle missing index — if
.runs/index.jsonis missing, add a blocker and do not create it - Use
runs-derivefor reading — this skill is write-only
Example pattern in cleanup agent:
# Get current timestamp
TIMESTAMP=$(bash .claude/scripts/demoswarm.sh time now)
# Update index
bash .claude/scripts/demoswarm.sh index upsert-status \
--index ".runs/index.json" \
--run-id "$RUN_ID" \
--status "$STATUS" \
--last-flow "signal" \
--updated-at "$TIMESTAMP"
Installation
The Rust implementation is preferred. Install to repo-local directory:
cargo install --path tools/demoswarm-runs-tools --root .demoswarm
The shim will automatically resolve in order:
.demoswarm/bin/demoswarm(repo-local install, preferred)demoswarmon PATH (global install)cargo runfallback (dev environments)- Python fallback (legacy)
Expert Next.js App Router
Developpement
Un skill qui transforme Claude en expert Next.js App Router.
Générateur de README
Developpement
Crée des README.md professionnels et complets pour vos projets.
Rédacteur de Documentation API
Developpement
Génère de la documentation API complète au format OpenAPI/Swagger.