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.
git clone --depth 1 https://github.com/dhslegen/digital-delivery-teamWrote 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/dhslegen/digital-delivery-team/wbs)<a href="https://agentmods.dev/commands/dhslegen/digital-delivery-team/wbs"><img src="https://agentmods.dev/badge/commands/dhslegen/digital-delivery-team/wbs.svg" alt="Measured on agentmods" 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.00024 | $0.01717 |
| Opus 5 | $0.00012 | $0.00859 |
| Sonnet 5 | $0.00005 | $0.00343 |
| Haiku 4.5 | $0.00002 | $0.00172 |
Grade B, and why
wbs scanned grade B with 1 finding 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 6d 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.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
[ -f "$DDT_PLUGIN_ROOT/bin/aggregate.mjs" ] || DDT_PLUGIN_ROOT=$(cat "${HOME}/.claude/delivery-metrics/.ddt-plugin-root" 2>/dev/null) How it starts
The opening of the file, as written. The whole thing — 155 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/wbs
输入:$ARGUMENTS
Phase 1 — 前置校验
test -f docs/prd.md || { echo "❌ docs/prd.md 不存在,请先运行 /prd"; exit 1; }
[ -f "$DDT_PLUGIN_ROOT/bin/aggregate.mjs" ] || DDT_PLUGIN_ROOT=$(cat "${HOME}/.claude/delivery-metrics/.ddt-plugin-root" 2>/dev/null)
[ -f "$DDT_PLUGIN_ROOT/bin/aggregate.mjs" ] || DDT_PLUGIN_ROOT="${HOME}/.claude/plugins/marketplaces/digital-delivery-team"
[ -f "$DDT_PLUGIN_ROOT/bin/aggregate.mjs" ] || { echo "❌ DDT plugin root 未解析。可能原因:(1) 插件未安装;(2) shell 中 DDT_PLUGIN_ROOT 指向无效路径,请 unset DDT_PLUGIN_ROOT 后重启会话;(3) 运行 /digital-delivery-team:doctor 自检"; exit 1; }
export DDT_PLUGIN_ROOT
if printf '%s' "$ARGUMENTS" | grep -q -- '--dry-run'; then
node "$DDT_PLUGIN_ROOT/bin/print-dry-run.mjs" --phase wbs --inputs "docs/prd.md,baseline/estimation-rules.md,baseline/historical-projects.csv" --outputs "docs/wbs.md,docs/risks.md" --next "/design"
exit 0
fi
node "$DDT_PLUGIN_ROOT/bin/emit-phase.mjs" --phase wbs --action start
mkdir -p baseline
test -f baseline/historical-projects.csv || cp "$DDT_PLUGIN_ROOT/skills/ddt-baseline-sync/assets/historical-projects.template.csv" baseline/historical-projects.csv # v0.9.7: 用 skill 模板(仅表头)初始化,避免插件示例污染用户基线
test -f baseline/estimation-rules.md || cp "$DDT_PLUGIN_ROOT/baseline/estimation-rules.md" baseline/estimation-rules.md
"$DDT_PLUGIN_ROOT/bin/check-blockers.sh" || exit 2
若 docs/wbs.md 已存在且未传 --refresh,进入增量修订模式。
Phase 2 — 派发 pm-agent
使用 Task 工具派发 pm-agent,传入:
docs/prd.md(产品需求文档)docs/wbs.md(已有 WBS,若存在,用于增量修订)$DDT_PLUGIN_ROOT/templates/wbs.template.md(WBS 模板,插件根——v0.9.3 D19)$DDT_PLUGIN_ROOT/templates/risks.template.md(风险清单模板,插件根)baseline/estimation-rules.md(项目根 的专家估算表,未存在则 fallback$DDT_PLUGIN_ROOT/baseline/estimation-rules.md)$ARGUMENTS
pm-agent 产出:
| 产出文件 | 说明 |
|---|---|
docs/wbs.md |
工作分解结构,含关键路径和工时估算 |
docs/risks.md |
风险清单,含概率/影响/应对措施 |
Phase 2.1 — 产出校验(v0.8.1 D12)
if ! node "$DDT_PLUGIN_ROOT/bin/check-agent-output.mjs" \
--file docs/wbs.md --min-lines 30 --name pm-agent; then
echo "- [BLOCK-AGENT-WBS] pm-agent 产出异常(详见 stderr)" >> docs/blockers.md
echo "❌ pm-agent 产出校验失败,已写 docs/blockers.md"
exit 5
fi
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.
- 6d ago First seen · 155 lines · 24 tokens per session scan B f64564130487
wbs is a command published in the GitHub repository dhslegen/digital-delivery-team (1 stars, last pushed 3mo ago), licensed MIT. It adds 24 tokens to every session and 1,717 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it B with 1 finding (reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
execute
Execute the next available tracked task with TDD, pre-commit validation, PR creation, AI code review, and issue tracker bridge sync.
dashboard
Compact visual progress dashboard with progress bar, task table, dependency graph, and active/blocked/next status.
ccc-retro
Periodic productivity retrospective — shipping summary, metrics, cost tracking, and reflection.
save
Save current work state for next session. Creates/updates .planning/ files (CHECKPOINT.md, STATE.md, settings.json) so Heimdall resumes with full context. NOT a rewind — saves forward progress. Run before closing a session or at any milestone.
ccc-init
CC Commander init — scaffold or refresh project CLAUDE.md, tasks/, and lessons.md from the latest v4.0 template. Preserves custom sections.
sync
Reconcile coco tracker state with the configured issue tracker. Syncs task statuses and reports mismatches.