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 agentmods add commands/ai-sdlc-framework/ai-sdlc/execute-parallel-statusgit clone --depth 1 https://github.com/ai-sdlc-framework/ai-sdlcWhat 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 | $0.00054 | $0.01399 |
| Opus 5 | $0.00027 | $0.00700 |
| Sonnet 5 | $0.00011 | $0.00280 |
| Haiku 4.5 | $0.00005 | $0.00140 |
Grade A, and why
execute-parallel-status 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 2d 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 — 140 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Show the live status of all /ai-sdlc execute-parallel sessions (AISDLC-462).
Reads .ai-sdlc/dispatch/sessions/ and renders a status table. No side effects.
BOARD_DIR=".ai-sdlc/dispatch"
SESSIONS_DIR="$BOARD_DIR/sessions"
if [ ! -d "$SESSIONS_DIR" ]; then
echo "No sessions directory found at $SESSIONS_DIR."
echo "Run /ai-sdlc execute-parallel to start parallel sessions."
exit 0
fi
# Count session files
SESSION_FILES=$(ls "$SESSIONS_DIR"/*.session.json 2>/dev/null | wc -l | tr -d ' ')
if [ "$SESSION_FILES" -eq 0 ]; then
echo "No session files in $SESSIONS_DIR."
echo "Run /ai-sdlc execute-parallel to start parallel sessions."
exit 0
fi
NOW_EPOCH=$(date +%s)
echo ""
echo "AI-SDLC Parallel Execute Status ($(date -u +"%Y-%m-%dT%H:%M:%SZ"))"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
printf "%-18s %-22s %-12s %-20s %-10s %s\n" "Task" "Window" "Status" "Step" "PR" "Heartbeat"
echo "────────────────────────────────────────────────────────────────────────────────"
node -e "
const fs = require('fs');
const path = require('path');
const sessionsDir = process.argv[1];
const nowEpoch = parseInt(process.argv[2], 10);
function heartbeatAge(ts) {
if (!ts) return '—';
try {
const epochMs = new Date(ts).getTime();
if (isNaN(epochMs)) return '?';
const ageSec = Math.floor(nowEpoch - (epochMs / 1000));
if (ageSec < 0) return '0s';
if (ageSec < 60) return ageSec + 's ago';
if (ageSec < 3600) return Math.floor(ageSec / 60) + 'm ago';
return Math.floor(ageSec / 3600) + 'h ago';
} catch { return '?'; }
}
const files = fs.readdirSync(sessionsDir)
.filter(f => f.endsWith('.session.json'))
.sort();
for (const f of files) {
try {
const s = JSON.parse(fs.readFileSync(path.join(sessionsDir, f), 'utf8'));
const task = (s.taskId || '?').padEnd(18).slice(0, 18);
const win = (s.tmuxWindow || '—').padEnd(22).slice(0, 22);
const status = (s.status || '?').padEnd(12).slice(0, 12);
const step = (s.currentStep || '—').padEnd(20).slice(0, 20);
const pr = s.prNumber ? ('#' + s.prNumber).padEnd(10).slice(0, 10) : '—'.padEnd(10).slice(0, 10);
const hb = heartbeatAge(s.lastHeartbeat);
process.stdout.write(task + ' ' + win + ' ' + status + ' ' + step + ' ' + pr + ' ' + hb + '\n');
} catch (e) {
// Log only the error code (not e.message) to avoid leaking filesystem paths.
process.stdout.write(f.padEnd(18).slice(0, 18) + ' (unreadable: ' + (e.code || 'parse-error') + ')\n');
}
}
" "$SESSIONS_DIR" "$NOW_EPOCH" 2>/dev/null
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
# Count active sessions
ACTIVE=$(node -e "
const fs = require('fs');
const path = require('path');
const sessionsDir = process.argv[1];
let count = 0;
try {
for (const f of fs.readdirSync(sessionsDir).filter(f => f.endsWith('.session.json'))) {
try {
const s = JSON.parse(fs.readFileSync(path.join(sessionsDir, f), 'utf8'));
if (s.status === 'starting' || s.status === 'in-progress') count++;
} catch {}
}
} catch {}
process.stdout.write(String(count));
" "$SESSIONS_DIR" 2>/dev/null || echo 0)
echo "Active: $ACTIVE / 5 sessions"
echo ""
echo "Attach to running sessions:"
echo " tmux attach -t ai-sdlc-parallel"
echo ""
echo "Clean up completed/failed sessions:"
echo " /ai-sdlc execute-parallel-cleanup"
echo ""
# Show archived count
ARCHIVE_DIR="$SESSIONS_DIR/archived"
if [ -d "$ARCHIVE_DIR" ]; then
ARCHIVED=$(ls "$ARCHIVE_DIR"/*.session.json 2>/dev/null | wc -l | tr -d ' ')
if [ "$ARCHIVED" -gt 0 ]; then
echo "Archived sessions (cleaned up): $ARCHIVED (in $ARCHIVE_DIR)"
fi
fi
Status definitions
| Status | Meaning |
|---|---|
starting |
tmux window spawned; claude /ai-sdlc execute not yet running |
in-progress |
First heartbeat received; pipeline is running |
done |
/ai-sdlc execute reported success; PR URL set |
failed |
/ai-sdlc execute exited non-zero or tmux window was killed |
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.
- 2d ago First seen · 140 lines · 54 tokens per session scan A e25177833633
execute-parallel-status is a command published in the GitHub repository ai-sdlc-framework/ai-sdlc (92 stars, last pushed 9d ago), licensed Apache-2.0. It adds 54 tokens to every session and 1,399 once invoked, about $0.0003 per session on Opus 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 commands, from other repositories
discover
Discover runtime AI components and static AI dependencies with AIR Blackbox.
evidence
Export a signed compliance evidence package as JSON or PDF for regulatory handoff.
replay
Replay recorded AI traces to detect behavioral drift between model versions.
comply
Run a full EU AI Act compliance scan on your Python AI project.
spec-intake
Execute the canonical workflow: .agent/workflows/spec-intake.md.
OPSX: Fast Forward
Create a change and generate all artifacts needed for implementation in one go.