From second-claude-code
Runs a Plan-Do-Check-Act cycle across research, production, review, and refinement phases for knowledge work. Use for complex multi-phase tasks involving writing, code, or content creation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/second-claude-code:pdcaThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **No skipping. Always proceed P→D→C→A in order.**
gotchas.mdreferences/act-phase.mdreferences/action-router.mdreferences/channels-integration.mdreferences/check-phase.mdreferences/code-engineering-lane.mdreferences/do-phase.mdreferences/domain-pipeline-integration.mdreferences/observability.mdreferences/phase-schemas.mdreferences/plan-phase.mdreferences/question-protocol.mdreferences/state-schema.mdreferences/stuck-detection.mdNo skipping. Always proceed P→D→C→A in order.
Meta-skill that runs the Plan → Do → Check → Act cycle. Each phase gates into the next. No gate skipping.
PDCA always runs. It is the top-level orchestrator for all knowledge work. The Plan→Do→Check→Act cycle wraps every task. Sub-skills (/threads, /newsletter, /academy-shorts, /card-news, /second-claude-code:write, /second-claude-code:research, /second-claude-code:review, /second-claude-code:refine) are building blocks that PDCA calls inside its phases — they are not replacements for PDCA, and they do not run on their own outside a PDCA cycle.
PDCA Cycle (always running)
├─ Plan → calls /second-claude-code:research (or domain research) + /second-claude-code:analyze
├─ Do → calls the appropriate sub-skill based on output format
│ ├─ Threads content? → /threads handles its own internal phases inside Do
│ ├─ Newsletter? → /newsletter handles its own phases inside Do
│ ├─ Shorts script? → /academy-shorts handles its own phases inside Do
│ ├─ Card news? → /card-news handles its own phases inside Do
│ └─ Generic content? → /second-claude-code:write
├─ Check → calls /second-claude-code:review (always, regardless of which sub-skill ran in Do)
└─ Act → calls /second-claude-code:refine or routes back to Plan/Do via Action Router
The key principle: the user only invokes PDCA. PDCA decides which sub-skill to dispatch in each phase. The sub-skill produces its phase output and returns control to PDCA, which then enforces the gate, runs Check, and routes Act findings.
When the task is code work (domain=code, repository edits, tests, debugging, CI, refactoring, or PR prep), PDCA still owns the Plan -> Do -> Check -> Act cycle, but it must load references/code-engineering-lane.md before planning. This lane absorbs the useful code-work discipline from external playbooks while preserving Second Claude's existing PDCA architecture.
The lane adds code-specific gates:
Use the lane as a specialization layer, not as a replacement for investigate, review, workflow, or loop.
When PDCA enters the Do phase, it picks the most specialized sub-skill that matches the artifact format:
| Output Format | Sub-Skill PDCA Dispatches | What That Sub-Skill Owns Internally |
|---|---|---|
| Threads article (@unclejobs.ai) | /threads | Its 8-phase pipeline (parse→research→draft→edit→cross-review→proofread→final QA→publish), voice-guide enforcement, Notion publishing |
| Korean tech newsletter | /newsletter | Its 7-phase pipeline, Notion/Beehiiv publishing |
| Shorts script (60-90s) | /academy-shorts | Research → script → editor pipeline with MMBridge review |
| Card news (carousel) | /card-news | Card news template + Playwright render pipeline |
| Generic article/report/blog/social | /second-claude-code:write | Pure execution from Plan artifacts |
Key trigger keywords for sub-skill selection (PDCA scans the user's prompt and the Plan output's dod field):
/threads in Do/newsletter in Do/academy-shorts in Do/card-news in Do/second-claude-code:write in DoThe Plan and Check phases add value that no sub-skill provides on its own:
A sub-skill running on its own = single-shot generation with the sub-skill's internal checks only. PDCA wrapping a sub-skill = upstream Plan rigor + sub-skill's internal pipeline + downstream Check + Act loop. Strictly more validation.
/threads, /newsletter, /academy-shorts each have multi-phase internal pipelines (e.g., /threads has 8 phases). When PDCA dispatches them in the Do phase, all of those internal phases run inside the Do phase. The sub-skill's internal phases are the implementation of "Do" for that format.
For the full sub-skill dispatch protocol (input contract, output contract, failure handling, integration points), see references/domain-pipeline-integration.md.
This means a full PDCA run on a threads article looks like:
PDCA Plan → /second-claude-code:research + /second-claude-code:analyze (gather sources, build framework)
PDCA Do → /threads (which internally runs its own 8 phases including the
sub-skill's research, draft, edit, cross-review, proofread, final QA,
publish — all gated by /threads' own contracts)
PDCA Check → /second-claude-code:review (parallel reviewers, even though /threads already did
its own cross-review — PDCA's Check adds an outside perspective)
PDCA Act → Action Router classifies any Check findings and routes to Plan,
Do, or Refine
PDCA's Check is not redundant with the sub-skill's internal review — they catch different things. The sub-skill's internal review checks for domain-specific issues (e.g., voice-guide violations). PDCA's Check looks at the result from outside the domain pipeline and catches the issues the domain pipeline cannot see itself.
A user asked for a threads article. PDCA was invoked but the orchestrator interpreted PDCA's abstract phases as a license to self-process — it skipped both /threads (the right Do-phase sub-skill) and /second-claude-code:review (the Check phase). Result: a 3,000-character article with no cross-review, no fact-check, no second model perspective. When the work was redone with PDCA explicitly dispatching /threads in Do and /second-claude-code:review in Check, three P0 factual errors surfaced (a math inconsistency, a wrong feature description, an incorrect currency conversion). The lesson: PDCA's value comes from the wrapping (Plan + Check + Act around whatever the Do phase produces), and skipping that wrapping is what makes outputs short and weak. Always run the full cycle. Always wrap. Never let the orchestrator self-process when a sub-skill exists.
| Signal | Phase | Skills Chained |
|---|---|---|
| "조사해", "알아봐", plan, research, explore | Plan (Gather) | research → analyze |
| "써", "만들어", "분석해", create, write, build | Do (Produce) | write (pure execution) |
| "검토해", "리뷰해", review, check, verify | Check (Verify) | review |
| "고쳐", "개선해", improve, fix, refine, iterate | Act (Refine) | action router → refine |
| "알아보고 써줘", "end-to-end", "full report" | Full PDCA | All phases in sequence |
When a single phase is detected, run that phase and pause at its gate. When full PDCA is detected, run all phases with gates between each.
User Prompt → prompt-detect.mjs (Layer 1: compound → /second-claude-code:pdca)
PDCA Orchestrator
│
├── PLAN (research → analyze)
│ ├── Question Protocol (max 3 Qs → unanswered = save assumptions)
│ ├── Eevee (researcher): data collection
│ └── Alakazam (analyst) + Mewtwo (strategist): structured analysis
│ └── Gate: Brief + Analysis exist? Sources ≥3?
│
├── DO (pure execution)
│ └── Smeargle (writer): /second-claude-code:write --skip-research --skip-review
│ └── Gate: Artifact complete? Format OK?
│
├── CHECK (unchanged)
│ └── Xatu + Absol + Porygon + Jigglypuff + Unown: /second-claude-code:review
│ └── Gate: Verdict routing
│
└── ACT (action router → refine)
├── Action Router (root cause classification)
│ ├── SOURCE/ASSUMPTION/FRAMEWORK → PLAN
│ ├── COMPLETENESS/FORMAT → DO
│ └── EXECUTION_QUALITY → REFINE
└── Ditto (editor): /second-claude-code:refine
└── Gate: Target met? → EXIT
Each phase outputs a validated schema before the gate is passed. See references/phase-schemas.md for full field rules and validation failure actions. Missing required fields are gate failures, not warnings.
Load the relevant checklist from references/ at each transition. Gates are mandatory — do NOT skip.
| Gate | Reference | Permission | Key Failure Condition |
|---|---|---|---|
| Plan → Do | references/plan-phase.md | plan (read-only) | sources_count < 3, Plan Mode not approved, any PlanOutput field missing |
| Do → Check | references/do-phase.md | acceptEdits | plan_findings_integrated: false, sections_complete: false, artifact absent |
| Check → Act | references/check-phase.md | plan (read-only) | Fewer than 2 reviewers, verdict not a standard value |
| Act → Exit/Cycle | references/act-phase.md | acceptEdits | decision invalid, root_cause_category empty |
Permission pattern: read-only (plan) → write (acceptEdits) → read-only → write. Switch at every phase boundary.
Check → Act routing: APPROVED → EXIT | MINOR FIXES → Act light touch | NEEDS IMPROVEMENT → Act full refine | MUST FIX → Act critical-first.
Cycle limit: If cycle_count >= max_cycles, do NOT start another cycle. Notify: "max_cycles에 도달했습니다 — 현재 결과물로 종료합니다." Exit with best artifact.
Worktree: Do artifacts written in worktree-pdca-do. If Check returns MUST FIX, orchestrator discards the worktree for a clean restart.
--skip-research --skip-review using Plan artifacts.| Flag | Values | Default |
|---|---|---|
--phase | plan|do|check|act|full | auto-detect |
--depth | shallow|medium|deep | medium |
--target | verdict or score | APPROVED |
--max | max Act iterations | 3 |
--max-cycles | max full PDCA re-cycles (Act→Plan→Do→Check) | 3 |
--no-questions | skip Question Protocol | false |
Note: --constraints is a write-skill flag passed through by the orchestrator (see do-phase.md, act-phase.md).
Run at every phase transition. See references/stuck-detection.md for full signal definitions, root causes, and remediation steps.
| Pattern | Trigger | Action |
|---|---|---|
| Plan Churn | cycle_count >= 3 AND "do" not in completed[] | Force Do with current plan; append uncertainty note |
| Check Avoidance | "do" in completed[] AND artifacts.check_report is null before entering Act | Block Act; inject DoD checklist; require review dispatch |
| Scope Creep | Do artifact scope diverges significantly from Plan scope at Do→Check gate | Alert user with planned-vs-actual comparison; wait for choice |
If both stuck patterns and max_cycles trigger simultaneously, report both and exit with the best artifact.
State persisted in .data/state/pdca-active.json. See references/state-schema.md for full schema, field definitions, and single-active-run constraint.
MCP tools (when pdca-state server is available): pdca_get_state, pdca_start_run, pdca_transition, pdca_check_gate, pdca_update_stuck_flags, pdca_end_run.
At each gate: phase summary + gate verdict (pass/fail + reason) + next phase recommendation + "Continue to [next phase]?" prompt (unless full PDCA mode).
At cycle end: full artifact chain, Action Router decisions, verdict progression, total phases + token cost estimate.
When Channels are configured (via .data/channels.json or TELEGRAM_CHAT_ID env), PDCA emits
notifications at phase transitions and review verdicts. Opt-in via --notify flag or by
creating .data/channels.json from the .data/channels.json.example template.
See references/channels-integration.md for event formats, configuration fields, and
the notification payload pattern used by hooks/session-end.mjs.
Important: The Pokemon names below are conceptual role labels, not Agent tool subagent_type values. PDCA does NOT dispatch them directly via the Agent tool. Instead, the chained skills (/second-claude-code:research, /second-claude-code:write, /second-claude-code:review, /second-claude-code:refine) handle these roles internally — they map each role to the appropriate concrete subagent or model.
If you (the orchestrator) try to call Agent(subagent_type: "eevee"), it will fail. Always go through the chained skill, never bypass to a Pokemon role.
# Roles handled inside /second-claude-code:research
researcher: { model: sonnet, role: eevee, purpose: "collect sources with citations, minimum 3 distinct sources" }
analyst: { model: sonnet, role: alakazam, purpose: "apply frameworks with evidence, no generic claims" }
strategist: { model: sonnet, role: mewtwo, purpose: "strategic synthesis, challenge assumptions" }
# Role handled inside /second-claude-code:write
writer: { model: opus, role: smeargle, purpose: "produce artifact from plan, skip-research skip-review" }
# Roles handled inside /second-claude-code:review (parallel dispatch)
deep-reviewer: { model: opus, role: xatu, purpose: "thorough quality review with structured critic output" }
devil-advocate: { model: sonnet, role: absol, purpose: "attack weakest points, find logical gaps" }
fact-checker: { model: sonnet, role: porygon, purpose: "verify claims against sources, flag unsupported statements" }
structure-analyst: { model: haiku, role: jigglypuff, purpose: "check organization, flow, format compliance" }
consistency-checker: { model: haiku, role: unown, purpose: "cross-reference internal consistency, flag contradictions" }
# Role handled inside /second-claude-code:refine
editor: { model: opus, role: ditto, purpose: "apply top 3 fixes per iteration, verify improvement" }
# Orchestration meta-role (the PDCA orchestrator itself)
orchestrator: { model: sonnet, role: arceus, purpose: "enforce gates, manage phase transitions, never skip phases, prefer domain hand-off over self-processing" }
How PDCA actually executes: The orchestrator calls /second-claude-code:research, /second-claude-code:write, /second-claude-code:review, /second-claude-code:refine as Skill invocations. Each of those skills internally dispatches the right subagents (general-purpose, code-reviewer, etc.) using the Agent tool. PDCA never bypasses this layer.
See gotchas.md for extended gotchas (stuck detection, worktree lifecycle, permission transitions, session resume, automation mode).
When mmbridge is detected (see references/mmbridge-integration.md) and the PDCA cycle exits with APPROVED, generate a handoff artifact.
mmbridge handoff --write .captures/pdca-handoff-${RUN_ID}.md
The handoff artifact summarizes:
Present the handoff path to the user:
"PDCA cycle complete. Handoff artifact saved to
.captures/pdca-handoff-${RUN_ID}.md"
The handoff artifact serves two purposes:
This is an optional convenience — the PDCA cycle is complete regardless of whether the handoff succeeds.
When mmbridge is detected, the PDCA orchestrator can optionally delegate the full cycle to mmbridge embrace for parallel multi-model acceleration.
--depth deep with full PDCA: embrace provides multi-model research and debate in parallel with internal agents--depth shallow or single-phase runsAt the start of a full PDCA cycle, if mmbridge is detected and depth is deep:
mmbridge embrace "<task summary>" --json --non-interactive > /tmp/mmbridge-embrace-${RUN_ID}.json
--non-interactive: auto-proceed through checkpoints (PDCA orchestrator manages gates, not embrace)--skip-phases: use when specific PDCA phases should not have embrace acceleration (e.g., --skip-phases security if not a code project)Embrace results are merged at multiple PDCA phases:
mmbridge embrace runs multiple models across multiple phases. Only activate at deep depth. Warn user about estimated cost at PDCA start.
npx claudepluginhub unclejobs-ai/second-claude-code --plugin second-claude-codeUnified PDCA cycle management — plan, design, do, analyze, iterate, report. Per-feature 9-phase workflow (pm→plan→design→do→check→act→qa→report→archive).
Explains the deep-work workflow phases (Brainstorm → Research → Plan → Implement → Test → Integrate) and their contracts. Use for overview, phase selection guidance, or understanding phase-to-phase gates.
Generates atomic PLAN.md files for hierarchical project planning in solo agentic dev with Claude. Covers briefs, roadmaps, phases; includes tasks, verification, checkpoints, success criteria.