/pdca-watch
Live PDCA dashboard ticking every 30s — reads pdca-status.json + token-ledger.ndjson tail, renders fixed-width panel via CC /loop. Triggers: pdca watch, live dashboard, watch progress
$ npx -y skills add popup-studio-ai/bkit-claude-code --skill pdca-watch --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/pdca-watch
Context preview
The summary Claude sees to decide when to auto-load this skill.
Live PDCA dashboard ticking every 30s — reads pdca-status.json + token-ledger.ndjson tail, renders fixed-width panel via CC /loop. Triggers: pdca watch, live dashboard, watch progress
SKILL.md
pdca-watch.SKILL.mdname: pdca-watch
classification: workflow
classification-reason: Live PDCA dashboard tied to bkit's state machine + token ledger
deprecation-risk: none
effort: low
description: |
Live PDCA dashboard ticking every 30s — reads pdca-status.json + token-ledger.ndjson tail, renders fixed-width panel via CC /loop.
Triggers: pdca watch, live dashboard, watch progress
argument-hint: "[feature]"
user-invocable: true
allowed-tools:
- Read
- Glob
imports: []
next-skill: null
pdca-phase: null
task-template: "[Watch] {feature}"PDCA Watch — Live Tick Dashboard
> v2.1.11 Sprint β FR-β4. Wraps `lib/dashboard/watch.js` over CC's > `/loop` (v2.1.71+). Read-only — only consumes state files; never > writes. Falls back to a single render when `/loop` is unsupported > (E-β4-01).
Arguments
| Argument | Description | Example | |----------|-------------|---------| | (none) | Auto-resolve active feature from `pdca-status.primaryFeature` | `/pdca-watch` | | `<feature>` | Watch a specific feature by name | `/pdca-watch bkit-v2111-integrated-enhancement` |
Behavior
Resolution
1. If `<feature>` is provided, use it verbatim. 2. Else read `.bkit/state/pdca-status.json` → `primaryFeature`, then `activeFeatures[0]` as fallback. 3. If still no feature → render `"No active PDCA feature. Start one with /pdca pm <feature>"` and exit.
Tick (every 30s via `/loop`)
For each tick, `lib/dashboard/watch.js#renderTick` produces a panel with:
Watch <feature> — tick N (HH:MM:SS)
─────────────────────────────────────────────────────────────
Phase: <phase> Match: <%> Iter: <n / 5>
Tokens: <in> in / <out> out · samples <N>
Est cost: $<USD>
─────────────────────────────────────────────────────────────
Data sources:
- Phase / matchRate / iterationCount: `pdca-status.features[<feature>]`
- Token totals: last 50 lines of `token-ledger.ndjson`
- Cost: Sonnet-class flat estimate ($3/Mtok in, $15/Mtok out)
Termination
- Ctrl-C from user
- Feature `phase === 'completed'` or `phase === 'archived'`
- After max 60 ticks (≈30 min) — caller restarts if more time needed
CC `/loop` Support
| CC Version | Behavior | |------------|----------| | ≥ 2.1.71 | Native `/loop 30s` ticker | | < 2.1.71 | E-β4-01: single render + warning, no loop | | Unknown | Same as < 2.1.71 (fail-safe) |
The check is performed via `watch.checkLoopSupport({ ccVersion })` — caller passes the resolved CC version from `lib/infra/cc-version-checker`.
Security
- Pure read on `.bkit/state/pdca-status.json` and `.bkit/runtime/token-ledger.ndjson`.
- Tail bounded to `MAX_TAIL_LINES = 200` regardless of caller input —
defends against pathological NDJSON growth.
- No subprocess spawning, no network.
- PII redaction on the ledger is owned by the writer (Token Accountant);
watch only reads what's already redacted.
Module Dependencies
| Module | Function | Usage | |--------|----------|-------| | `lib/dashboard/watch.js` | `resolveFeature()` | Auto-detect when no arg | | `lib/dashboard/watch.js` | `renderTick()` | One frame per tick | | `lib/dashboard/watch.js` | `tailLedger()` | NDJSON tail (≤200) | | `lib/dashboard/watch.js` | `checkLoopSupport()` | CC version gate | | `lib/infra/cc-version-checker.js` | `getCurrent()` | Version source |
Examples
# Auto-detect active feature
/pdca-watch
# Watch a specific feature
/pdca-watch bkit-v2111-integrated-enhancement
Related
- `/pdca status` — single snapshot (no loop)
- `/control trust` — trust score informs auto-escalation
- `/pdca-fast-track` — Daniel-mode auto-approve checkpoints
ARGUMENTS:
Read more
name: pdca-watch
classification: workflow
classification-reason: Live PDCA dashboard tied to bkit's state machine + token ledger
deprecation-risk: none
effort: low
description: |
Live PDCA dashboard ticking every 30s — reads pdca-status.json + token-ledger.ndjson tail, renders fixed-width panel via CC /loop.
Triggers: pdca watch, live dashboard, watch progress
argument-hint: "[feature]"
user-invocable: true
allowed-tools:
- Read
- Glob
imports: []
next-skill: null
pdca-phase: null
task-template: "[Watch] {feature}"PDCA Watch — Live Tick Dashboard
> v2.1.11 Sprint β FR-β4. Wraps `lib/dashboard/watch.js` over CC's > `/loop` (v2.1.71+). Read-only — only consumes state files; never > writes. Falls back to a single render when `/loop` is unsupported > (E-β4-01).
Arguments
| Argument | Description | Example | |----------|-------------|---------| | (none) | Auto-resolve active feature from `pdca-status.primaryFeature` | `/pdca-watch` | | `<feature>` | Watch a specific feature by name | `/pdca-watch bkit-v2111-integrated-enhancement` |
Behavior
Resolution
1. If `<feature>` is provided, use it verbatim. 2. Else read `.bkit/state/pdca-status.json` → `primaryFeature`, then `activeFeatures[0]` as fallback. 3. If still no feature → render `"No active PDCA feature. Start one with /pdca pm <feature>"` and exit.
Tick (every 30s via `/loop`)
For each tick, `lib/dashboard/watch.js#renderTick` produces a panel with:
Watch <feature> — tick N (HH:MM:SS) ───────────────────────────────────────────────────────────── Phase: <phase> Match: <%> Iter: <n / 5> Tokens: <in> in / <out> out · samples <N> Est cost: $<USD> ─────────────────────────────────────────────────────────────
Data sources:
- Phase / matchRate / iterationCount: `pdca-status.features[<feature>]`
- Token totals: last 50 lines of `token-ledger.ndjson`
- Cost: Sonnet-class flat estimate ($3/Mtok in, $15/Mtok out)
Termination
- Ctrl-C from user
- Feature `phase === 'completed'` or `phase === 'archived'`
- After max 60 ticks (≈30 min) — caller restarts if more time needed
CC `/loop` Support
| CC Version | Behavior | |------------|----------| | ≥ 2.1.71 | Native `/loop 30s` ticker | | < 2.1.71 | E-β4-01: single render + warning, no loop | | Unknown | Same as < 2.1.71 (fail-safe) |
The check is performed via `watch.checkLoopSupport({ ccVersion })` — caller passes the resolved CC version from `lib/infra/cc-version-checker`.
Security
- Pure read on `.bkit/state/pdca-status.json` and `.bkit/runtime/token-ledger.ndjson`.
- Tail bounded to `MAX_TAIL_LINES = 200` regardless of caller input —
defends against pathological NDJSON growth.
- No subprocess spawning, no network.
- PII redaction on the ledger is owned by the writer (Token Accountant);
watch only reads what's already redacted.
Module Dependencies
| Module | Function | Usage | |--------|----------|-------| | `lib/dashboard/watch.js` | `resolveFeature()` | Auto-detect when no arg | | `lib/dashboard/watch.js` | `renderTick()` | One frame per tick | | `lib/dashboard/watch.js` | `tailLedger()` | NDJSON tail (≤200) | | `lib/dashboard/watch.js` | `checkLoopSupport()` | CC version gate | | `lib/infra/cc-version-checker.js` | `getCurrent()` | Version source |
Examples
# Auto-detect active feature /pdca-watch # Watch a specific feature /pdca-watch bkit-v2111-integrated-enhancement
Related
- `/pdca status` — single snapshot (no loop)
- `/control trust` — trust score informs auto-escalation
- `/pdca-fast-track` — Daniel-mode auto-approve checkpoints
ARGUMENTS:
A Claude Code plugin that verifies AI-generated code against its own design specs. Three commands. Anyone — even someone vibe-coding for the first time — can ship robust, production-quality software.
Repo: popup-studio-ai/bkit-claude-code
Other skills on bkit.
- /audit
View audit logs, decision traces, and session history for AI transparency. ACTION_TYPES (19 entries) include PDCA events (phase_transition, gate_passed/failed, agent_spawned/completed/failed, rollback_executed, destructive_blocked) and Sprint events (sprint_paused,
Open skill - /bkend-auth
bkend.ai authentication — email/social login, JWT tokens, RBAC, session management. Triggers: bkend auth, bkend login, bkend signup, bkend JWT, bkend RBAC
Open skill - /bkend-cookbook
bkend.ai project tutorials (todo to SaaS) and common error troubleshooting. Triggers: bkend tutorial, bkend cookbook, bkend troubleshooting
Open skill - /bkend-data
bkend.ai database — CRUD, column types, filtering, sorting, relations, indexing. Triggers: bkend table, bkend CRUD, bkend column, bkend relation, bkend data
Open skill - /bkend-quickstart
bkend.ai onboarding — MCP setup, resource hierarchy, tenant/user model, first project. Triggers: bkend quickstart, bkend onboarding, bkend setup, bkend MCP
Open skill - /bkend-storage
bkend.ai file storage — upload (presigned URL), download (CDN), visibility levels, buckets. Triggers: bkend file, bkend upload, bkend download, bkend storage, bkend presigned URL
Open skill

