with one click
docs-update
// [Documentation] Use when updating impacted documentation after code, spec, or test changes.
// [Documentation] Use when updating impacted documentation after code, spec, or test changes.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | docs-update |
| description | [Documentation] Use when updating impacted documentation after code, spec, or test changes. |
Codex compatibility note:
- Invoke repository skills with
$skill-namein Codex; this mirrored copy rewrites legacy Claude/skill-namereferences.- Prefer the
plan-hardskill for planning guidance in this Codex mirror.- Task tracker mandate: BEFORE executing any workflow or skill step, create/update task tracking for all steps and keep it synchronized as progress changes.
- User-question prompts mean to ask the user directly in Codex.
- Ignore Claude-specific mode-switch instructions when they appear.
- Strict execution contract: when a user explicitly invokes a skill, execute that skill protocol as written.
- Subagent authorization: when a skill is user-invoked or AI-detected and its protocol requires subagents, that skill activation authorizes use of the required
spawn_agentsubagent(s) for that task.- Do not skip, reorder, or merge protocol steps unless the user explicitly approves the deviation first.
- For workflow skills, execute each listed child-skill step explicitly and report step-by-step evidence.
- If a required step/tool cannot run in this environment, stop and ask the user before adapting.
Codex does not receive Claude hook-based doc injection. When coding, planning, debugging, testing, or reviewing, open project docs explicitly using this routing.
Always read:
docs/project-config.json (project-specific paths, commands, modules, and workflow/test settings)docs/project-reference/docs-index-reference.md (routes to the full docs/project-reference/* catalog)docs/project-reference/lessons.md (always-on guardrails and anti-patterns)Situation-based docs:
backend-patterns-reference.md, domain-entities-reference.md, project-structure-reference.mdfrontend-patterns-reference.md, scss-styling-guide.md, design-system/README.mdfeature-docs-reference.mdintegration-test-reference.mde2e-test-reference.mdcode-review-rules.md plus domain docs above based on changed filesDo not read all docs blindly. Start from docs-index-reference.md, then open only relevant files for the task.
[BLOCKING] Execute skill steps in declared order. NEVER skip, reorder, or merge steps without explicit user approval. [BLOCKING] Before each step or sub-skill call, update task tracking: set
in_progresswhen step starts, setcompletedwhen step ends. [BLOCKING] Every completed/skipped step MUST include brief evidence or explicit skip reason. [BLOCKING] If Task tools are unavailable, create and maintain an equivalent step-by-step plan tracker with the same status transitions.
Goal: Detect impacted docs from code changes; orchestrate updates across all doc types.
Orchestration Model:
git diff โ Triage โ Phase 1: Project Docs (inline)
โ Phase 2: $feature-docs (business feature docs)
โ Phase 2.5: $spec-discovery (engineering spec) [if docs/specs/ exists]
โ Phase 3: $tdd-spec (test specifications)
โ Phase 4: $tdd-spec [direction=sync] (dashboard sync)
โ Phase 5: Summary Report
Key Rules:
docs/specs/ content$ARGUMENTSin_progress -> execute -> completed (or completed with skip reason)Be skeptical. Apply critical thinking, sequential thinking. Every claim needs traced proof, confidence >80%.
[BLOCKING] Create ALL 8 tasks via task tracking BEFORE touching any file. NEVER consolidate, rename, omit. Conditional tasks skipped: mark
completedimmediately with reason โ NEVER silently omit.
| # | Task Subject | Conditional? |
|---|---|---|
| 1 | [docs-update] Phase 0 โ Triage: collect git diff, categorize files, detect modules, check existing docs | No โ always first |
| 2 | [docs-update] Phase 1 โ Update project docs (project-structure-reference.md, README.md) | Yes โ only if src/{Framework}/** or architectural changes in diff |
| 3 | [docs-update] Phase 2 โ Invoke $feature-docs: update business feature docs | Yes โ service/frontend files changed AND module has existing feature docs |
| 4 | [docs-update] Phase 2.5 โ Invoke $spec-discovery [mode=update]: update engineering spec bundle | Yes โ docs/specs/{app-bucket}/{system-name}/ exists AND service/frontend files changed |
| 5 | [docs-update] Phase 3 โ Invoke $tdd-spec: update/add test specifications | Yes โ new functionality added OR existing behavior changed |
| 6 | [docs-update] Phase 4 โ Invoke $tdd-spec [direction=sync]: sync QA dashboard | Yes โ Phase 3 changed TCs OR docs/specs/ exists |
| 7 | [docs-update] Phase 5 โ Write summary report to plans/reports/docs-update-{YYMMDD}-{HHMM}.md | No โ always |
| 8 | [docs-update] Final review โ verify all impacted docs updated, no phases skipped without justification | No โ always |
Execution rules:
in_progress when starting, completed when done โ one active at a timecompleted with reason "Skipped โ no business code changed"in_progresswhat ran, what changed, why skipped)| Order | Task ID | Step / Phase | Skill Call | Tracking Rule |
|---|---|---|---|---|
| 1 | 1 | Phase 0: Triage | Inline triage logic in this skill | Set Task 1 in_progress before diff scan; set completed after module + impact map recorded |
| 2 | 2 | Phase 1: Project Docs | docs-manager sub-agent (if impacted) | Set Task 2 in_progress before spawn/update; completed with updated docs or skip reason |
| 3 | 3 | Phase 2: Business Feature Docs | $feature-docs | Set Task 3 in_progress before invocation; completed after output review |
| 4 | 4 | Phase 2.5: Engineering Spec | $spec-discovery [mode=update] | Set Task 4 in_progress before invocation; completed with changelog/frontmatter verification |
| 5 | 5 | Phase 3: Test Specs | $tdd-spec | Set Task 5 in_progress before invocation; completed after TC review |
| 6 | 6 | Phase 4: Dashboard Sync | $tdd-spec [direction=sync] | Set Task 6 in_progress before invocation; completed after sync validation |
| 7 | 7 | Phase 5: Summary Report | Inline report write | Set Task 7 in_progress before report write; completed after file path confirmed |
| 8 | 8 | Final Review | Inline verification gate | Set Task 8 in_progress before final audit; completed after all phases justified |
Enforcement: If a required step cannot run, STOP and ask user before adapting order. Never continue with untracked steps.
git diff --name-only HEAD (staged + unstaged changes)git diff --name-only HEAD~1 (last commit)git diff --name-only origin/develop...HEAD (branch changes)| Changed File Pattern | Impact Category | Phases to Run |
|---|---|---|
src/Services/** | feature-docs + tdd-spec + project-docs | 1 + 2 + 3 + 4 |
{frontend-apps-dir}/**, {frontend-libs-dir}/{domain-lib}/** | feature-docs + tdd-spec + project-docs | 1 + 2 + 3 + 4 |
{legacy-frontend-dir}/**Client/** | feature-docs + tdd-spec + project-docs | 1 + 2 + 3 + 4 |
src/{Framework}/** | project-docs only | 1 only |
docs/** | project-docs only | 1 only |
.claude/**, config files only | none | Fast exit |
{frontend-libs-dir}/{platform-core-lib}/**, {frontend-libs-dir}/{common-lib}/** | project-docs only | 1 only |
ALL changed files in none category (only .claude/, .github/, root config):
"No documentation impacted by current changes (config/tooling only)."completed with reason "Skipped โ no business code changed"Extract unique module names from changed paths. MUST ATTENTION dedup: unique() before passing to any sub-skill โ backend + frontend same module = ONE entry. Prevents duplicate $feature-docs invocations.
| Changed File Path Pattern | Detected Module |
|---|---|
src/Services/{Module}/** | {Module} |
{frontend-apps-dir}/{app-name}/** | {Module} (map app to module) |
{frontend-libs-dir}/{domain-lib}/src/{feature}/** | {Module} (map feature to module) |
{legacy-frontend-dir}/{Module}Client/** | {Module} |
Build project-specific mapping:
ls -d src/Services/*/
ls -d docs/business-features/*/
For each detected module:
docs/business-features/{Module}/ existsdocs/business-features/{Module}/detailed-features/ has docsdocs/specs/{Module}/ existshasFeatureDocs, hasTestSpecs, hasTestSpecsDashboardWhen to run: Diff includes src/{Framework}/**, docs/**, or architectural changes.
When to skip: Only service-layer or frontend feature files changed. Skip โ proceed to Phase 2.
Standalone (not workflow step): spawn 2-4 scout-external (preferred) or scout (fallback) via Task. Merge results into context.
Workflow step: skip โ use Phase 0 git diff context.
Pass context to docs-manager sub-agent (agent_type="docs-manager") for project doc updates:
docs/project-reference/project-structure-reference.md โ update if service architecture or cross-service patterns changedREADME.md โ update if project scope or setup changed (keep under 300 lines)NEVER regenerate all docs โ only update docs directly impacted by changes.
$feature-docsWhen to run: Triage detected modules with hasFeatureDocs = true AND service/frontend files changed.
When to skip: No service/frontend feature files changed. Report: "No business feature docs impacted."
| Scenario | Action |
|---|---|
| Module has existing feature docs | Invoke $feature-docs โ auto-detect triggers update flow |
| Module has NO feature docs | Report: "Module {Module} has no feature docs. Run $feature-docs to create." โ skip |
| User explicitly asked for full doc creation | Invoke $feature-docs with explicit module name |
$feature-docs$feature-docs Update feature docs for modules: {detected modules}.
Changed files: {list from triage}.
Impacted sections based on change types: {section impact from triage}.
Mode: update (existing docs only, do not create from scratch).
What $feature-docs handles (DO NOT duplicate here):
$feature-docs Output$feature-docs for missed sectionsWhen to run: Same conditions as Phase 2 AND docs/specs/{app-bucket}/{system-name}/ exists.
When to skip:
docs/, .claude/, or config files changeddocs/specs/ empty or no {system-name}/ subfolder existsproject-config.json contains "spec_discovery_update": falsecat project-config.json 2>/dev/null | grep spec_discovery_update
If "spec_discovery_update": false โ skip Phase 2.5 entirely.
# Exclude dated legacy folders like 260419-*
ls docs/specs/ 2>/dev/null | head -5
If docs/specs/ empty or not found โ skip Phase 2.5.
Disambiguation rule:
YYMMDD-* pattern) โ legacy artifactsdocs/specs/ may be app-bucket names or flat system names, depending on the host project.ls docs/specs/{app-bucket}/ to find system-name{app-bucket}/{system-name}00-module-registry.md; update matching onlyReuse impact map from Phase 2:
docs/specs/{app-bucket}/{system-name}/00-module-registry.md)$spec-discovery mode=update modules={list} git_ref={current_ref}
Scope: only impacted modules from Step 2.5.2.
Input: impact map (module list + impacted phases).
Output: updated spec files + SPEC-CHANGELOG.md entry.
last_extracted frontmatter updated on changed spec files"Engineering spec updated: {N} modules, {M} phases re-extracted"Separation of concerns:
docs-updateorchestrates โ passes scope to spec-discovery for extraction. NEVER duplicates extraction logic.
$tdd-specWhen to run: New functionality added (commands, queries, endpoints, components) OR existing behavior changed.
When to skip: Changes purely cosmetic (styling, comments, docs-only) with no behavioral impact.
| Context | TC Mode |
|---|---|
| New feature code, no existing TCs | implement-first |
| PBI/story exists, code not yet written | TDD-first |
| Existing TCs + code changes / bugfix | update |
| User says "sync test specs" | sync |
| Tests exist with annotations, no docs | from-integration-tests |
$tdd-spec$tdd-spec Mode: {detected mode}.
Modules: {detected modules}.
Changed files: {list from triage}.
New functionality detected: {new commands/queries/endpoints from diff analysis}.
What $tdd-spec handles (DO NOT duplicate here):
$tdd-spec Output$tdd-spec [direction=sync]When to run: Phase 3 produced new/updated TCs, OR docs/specs/ exists and may be stale.
When to skip: No test spec changes AND no docs/specs/ directory exists.
$tdd-spec [direction=sync]$tdd-spec [direction=sync] Sync test specs for modules: {detected modules}.
Direction: forward (feature docs Section 15 โ docs/specs/ dashboard).
Updated TCs from Phase 3: {list of new/changed TC IDs}.
What $tdd-spec [direction=sync] handles (DO NOT duplicate here):
[Trait("TestSpec", ...)])Which skill owns which doc sections โ docs-update delegates only, NEVER writes directly:
| Section | Owner Skill | docs-update Role |
|---|---|---|
| S1โS14 (feature doc) | $feature-docs | Pass triage context; review output |
| S15 (Test Specs) | $tdd-spec | Pass TC mode + changed files; NEVER write TCs here |
docs/specs/ dashboard | $tdd-spec [direction=sync] | Pass module list + direction; NEVER edit directly |
| Engineering spec bundle | $spec-discovery | Pass module list + update scope |
ALWAYS write full report to plans/reports/docs-update-{YYMMDD}-{HHMM}.md:
### Documentation Update Summary
**Triage:** {N} files changed โ {categories detected}
**Modules detected:** {module list}
**Phase 1 โ Project Docs:**
- {Updated/Skipped}: {reason}
**Phase 2 โ Business Feature Docs ($feature-docs):**
- Module {X}: {Updated sections A, B, C / No existing docs / Not impacted}
- Module {Y}: {Updated sections D, E / Skipped: no feature docs}
**Phase 2.5 โ Engineering Spec ($spec-discovery update):**
- {Updated N modules, M phases re-extracted / Skipped: no spec bundle / Skipped: spec_discovery_update=false}
- โ ๏ธ If skipped: "No engineering spec bundle found. Run $workflow-spec-driven-dev (mode: init-full) to bootstrap."
**Phase 3 โ Test Specifications ($tdd-spec):**
- Mode: {mode used}
- New TCs: {list of TC IDs added}
- Updated TCs: {list of TC IDs modified}
- Skipped: {reason if skipped}
**Phase 4 โ Dashboard Sync ($tdd-spec [direction=sync]):**
- {Synced N TCs / Skipped: no dashboard}
- Discrepancies: {3-way comparison issues}
**Recommendations:**
- {New docs that should be created}
- {Stale docs flagged but not auto-fixed}
- {TCs flagged as Untested}
| Scenario | Use docs-update? | Use skill directly? |
|---|---|---|
| Post-implementation doc sync (any code change) | Yes โ full orchestration | โ |
| Create new feature docs from scratch | No | $feature-docs |
| Generate TCs for specific PBI (TDD-first) | No | $tdd-spec |
| Sync dashboard only (no code changes) | No | $tdd-spec [direction=sync] |
Workflow step after $code or $fix | Yes โ full orchestration | โ |
| User asks "update docs after my changes" | Yes โ full orchestration | โ |
Pass caller context via $ARGUMENTS to skip redundant triage or narrow scope:
| Key | Example | Effect |
|---|---|---|
modules | modules=Growth,Employee | Skip auto-detect; use provided list |
changed_files | changed_files=src/Services/Growth/... | Skip git diff; use provided file list |
phases | phases=2,3 | Run only specified phases |
mode | mode=update | Override feature-docs mode detection |
tc_mode | tc_mode=implement-first | Override tdd-spec mode detection |
skip_phases | skip_phases=1,2.5 | Skip specific phases |
<additional_requests> $ARGUMENTS </additional_requests>
| Situation | What to do instead |
|---|---|
Spec bundle (docs/specs/) missing but should exist | Run $spec-discovery init first, then docs-update |
| Feature doc doesn't exist | Run $feature-docs init first |
| Integration tests don't match TCs | Run $integration-test-review to diagnose, then $integration-test to fix |
| Bug caused by wrong spec | Run $spec-discovery update โ $feature-docs update BEFORE docs-update |
[BLOCKING] Create ALL 8 tasks via task tracking BEFORE any action โ see Mandatory Task Creation table. NEVER skip, batch-complete, or mark done without invoking sub-skill. [BLOCKING] Follow fixed step-skill order:
Phase 0 -> Phase 1 -> Phase 2 -> Phase 2.5 -> Phase 3 -> Phase 4 -> Phase 5 -> Final review. NEVER reorder, merge, or skip without explicit user approval. [BLOCKING] Per-step task lock: BEFORE each step, mark taskin_progress; AFTER each step, mark taskcompletedwith evidence or explicit skip reason. [BLOCKING] If Task tool unavailable, create equivalent 8-step plan tracker and keep statuses synced for every step.
Critical Purpose: Single orchestrator for ALL documentation sync after code changes. Triages impact, delegates to specialized skills.
Evidence Gate: [BLOCKING] โ every claim requires
file:lineproof or traced evidence, confidence >80% to act.
Critical Thinking Mindset โ Apply critical thinking, sequential thinking. Every claim needs traced proof, confidence >80% to act. Anti-hallucination: Never present guess as fact โ cite sources for every claim, admit uncertainty freely, self-check output for errors, cross-reference independently, stay skeptical of own confidence โ certainty without evidence root of all hallucination.
Sub-Agent Return Contract โ When this skill spawns a sub-agent, the sub-agent MUST return ONLY this structure. Main agent reads only this summary โ NEVER requests full sub-agent output inline.
## Sub-Agent Result: [skill-name] Status: โ PASS | โ ๏ธ PARTIAL | โ FAIL Confidence: [0-100]% ### Findings (Critical/High only โ max 10 bullets) - [severity] [file:line] [finding] ### Actions Taken - [file changed] [what changed] ### Blockers (if any) - [blocker description] Full report: plans/reports/[skill-name]-[date]-[slug].mdMain agent reads
Full reportfile ONLY when: (a) resolving a specific blocker, or (b) building a fix plan. Sub-agent writes full report incrementally โ never held in memory.
Cross-Service Check โ Microservices/event-driven: MANDATORY before concluding investigation, plan, spec, or feature doc. Missing downstream consumer = silent regression.
Boundary Grep terms Event producers Publish,Dispatch,Send,emit,EventBus,outbox,IntegrationEventEvent consumers Consumer,EventHandler,Subscribe,@EventListener,inboxSagas/orchestration Saga,ProcessManager,Choreography,Workflow,OrchestratorSync service calls HTTP/gRPC calls to/from other services Shared contracts OpenAPI spec, proto, shared DTO โ flag breaking changes Data ownership Other service reads/writes same table/collection โ Shared-DB anti-pattern Per touchpoint: owner service ยท message name ยท consumers ยท risk (NONE / ADDITIVE / BREAKING).
BLOCKED until: Producers scanned ยท Consumers scanned ยท Sagas checked ยท Contracts reviewed ยท Breaking-change risk flagged
AI Mistake Prevention โ Failure modes to avoid on every task:
Check downstream references before deleting. Deleting components causes documentation and code staleness cascades. Map all referencing files before removal. Verify AI-generated content against actual code. AI hallucinates APIs, class names, and method signatures. Always grep to confirm existence before documenting or referencing. Trace full dependency chain after edits. Changing a definition misses downstream variables and consumers derived from it. Always trace the full chain. Trace ALL code paths when verifying correctness. Confirming code exists is not confirming it executes. Always trace early exits, error branches, and conditional skips โ not just happy path. When debugging, ask "whose responsibility?" before fixing. Trace whether bug is in caller (wrong data) or callee (wrong handling). Fix at responsible layer โ never patch symptom site. Assume existing values are intentional โ ask WHY before changing. Before changing any constant, limit, flag, or pattern: read comments, check git blame, examine surrounding code. Verify ALL affected outputs, not just the first. Changes touching multiple stacks require verifying EVERY output. One green check is not all green checks. Holistic-first debugging โ resist nearest-attention trap. When investigating any failure, list EVERY precondition first (config, env vars, DB names, endpoints, DI registrations, data preconditions), then verify each against evidence before forming any code-layer hypothesis. Surgical changes โ apply the diff test. Bug fix: every changed line must trace directly to the bug. Don't restyle or improve adjacent code. Enhancement task: implement improvements AND announce them explicitly. Surface ambiguity before coding โ don't pick silently. If request has multiple interpretations, present each with effort estimate and ask. Never assume all-records, file-based, or more complex path.
Nested Task Expansion Contract โ For workflow-step invocation, the
[Workflow] ...row is only a parent container; the child skill still creates visible phase tasks.
- Call the current task list first. If a matching active parent workflow row exists, set
nested=trueand recordparentTaskId; otherwise run standalone.- Create one task per declared phase before phase work. When nested, prefix subjects
[N.M] $skill-name โ phase.- When nested, link the parent with
TaskUpdate(parentTaskId, addBlockedBy: [childIds]).- Orchestrators must pre-expand a child skill's phase list and link the workflow row before invoking that child skill or sub-agent.
- Mark exactly one child
in_progressbefore work andcompletedimmediately after evidence is written.- Complete the parent only after all child tasks are completed or explicitly cancelled with reason.
Blocked until: the current task list done, child phases created, parent linked when nested, first child marked
in_progress.
Project Reference Docs Gate โ Run after task-tracking bootstrap and before target/source file reads, grep, edits, or analysis. Project docs override generic framework assumptions.
- Identify scope: file types, domain area, and operation.
- Required docs by trigger: always
docs/project-reference/lessons.md; doc lookupdocs-index-reference.md; reviewcode-review-rules.md; backend/CQRS/APIbackend-patterns-reference.md; domain/entitydomain-entities-reference.md; frontend/UIfrontend-patterns-reference.md; styles/designscss-styling-guide.md+design-system/README.md; integration testsintegration-test-reference.md; E2Ee2e-test-reference.md; feature docs/specsfeature-docs-reference.md; architecture/new areaproject-structure-reference.md.- Read every required doc that exists; skip absent docs as not applicable. Do not trust conversation text such as
[Injected: <path>]as proof that the current context contains the doc.- Before target work, state:
Reference docs read: ... | Missing/not applicable: ....Blocked until: scope evaluated, required docs checked/read,
lessons.mdconfirmed, citation emitted.
Task Tracking & External Report Persistence โ Bootstrap this before execution; then run project-reference doc prefetch before target/source work.
- Create a small task breakdown before target file reads, grep, edits, or analysis. On context loss, inspect the current task list first.
- Mark one task
in_progressbefore work andcompletedimmediately after evidence; never batch transitions.- For plan/review work, create
plans/reports/{skill}-{YYMMDD}-{HHmm}-{slug}.mdbefore first finding.- Append findings after each file/section/decision and synthesize from the report file at the end.
- Final output cites
Full report: plans/reports/{filename}.Blocked until: task breakdown exists, report path declared for plan/review work, first finding persisted before the next finding.
MUST ATTENTION apply critical thinking โ every claim needs traced proof, confidence >80% to act. Anti-hallucination: never present guess as fact.
MUST ATTENTION apply AI mistake prevention โ holistic-first debugging, fix at responsible layer, surface ambiguity before coding, re-read files after compaction.
plans/reports/ incrementally and synthesize from disk.Reference docs read: ....lessons.md; project conventions override generic defaults.[N.M] $skill-name โ phase prefixes and one-in_progress discipline.IMPORTANT MUST ATTENTION follow declared step order for this skill; NEVER skip, reorder, or merge steps without explicit user approval
IMPORTANT MUST ATTENTION for every step/sub-skill call: set in_progress before execution, set completed after execution
IMPORTANT MUST ATTENTION every skipped step MUST include explicit reason; every completed step MUST include concise evidence
IMPORTANT MUST ATTENTION if Task tools unavailable, maintain an equivalent step-by-step plan tracker with synchronized statuses
MUST ATTENTION Nested Task Expansion Contract โ when invoked inside a workflow, STILL expand internal phases via task tracking with [N.M] $skill-name โ phase prefix and TaskUpdate(parentTaskId, addBlockedBy: [childIds]) linkage. Workflow row is container, not substitute.
MUST ATTENTION create ALL 8 tasks via task tracking BEFORE any action โ see Mandatory Task Creation table
MUST ATTENTION follow fixed step-skill order: 0 -> 1 -> 2 -> 2.5 -> 3 -> 4 -> 5 -> final review โ NEVER reorder without explicit user approval
MUST ATTENTION for EVERY step: set task in_progress BEFORE execution, set completed AFTER execution with evidence or skip reason
MUST ATTENTION if task tooling unavailable, use equivalent 8-step plan tracker and keep statuses synced per step
MUST ATTENTION docs-update is a router ONLY โ NEVER write Section 15, edit docs/specs/ files, or duplicate sub-skill logic
MUST ATTENTION validate decisions with user via a direct user question โ NEVER auto-decide
MUST ATTENTION dedup module list before passing to sub-skills โ same module backend + frontend = ONE entry
MUST ATTENTION skip phases with no impact but ALWAYS mark task completed with reason โ NEVER silently omit
MUST ATTENTION Phase 2.5 runs $spec-discovery [mode=update] โ syncs engineering spec bundle with code changes
MUST ATTENTION Phase 3 runs $tdd-spec โ syncs test case specs in feature docs Section 15
MUST ATTENTION Phase 4 runs $tdd-spec [direction=sync] โ pushes TCs to QA dashboard
MUST ATTENTION final review task (#8) verifies all impacted docs updated, no phases skipped without justification
Anti-Rationalization:
| Evasion | Rebuttal |
|---|---|
| "Only docs/config changed โ skip all phases" | Run Phase 0 triage anyway โ fast-exit is a DECISION, not an assumption |
| "No feature docs exist โ skip Phase 2" | Mark task completed with reason. NEVER silently omit |
| "Module unchanged โ skip sub-skill" | Show file:line evidence. No proof = no skip |
| "Already know what changed" | Still run git diff โ partial knowledge causes missed updates |
| "Phase 5 report not needed" | ALWAYS write summary report โ it's the audit trail |
| "I will update tasks later" | Invalid. Task status must change before/after each step in real time. |
| "I'll run skills first then create tasks" | Invalid. Create/track tasks first, then execute step-skill calls. |
[BLOCKING] Create ALL 8 tasks via task tracking (or equivalent 8-step plan tracker) BEFORE any action. Track each step state live.
Source: .claude/hooks/lib/prompt-injections.cjs + .claude/.ck.json
$workflow-start <workflowId> for standard; sequence custom steps manually[CRITICAL] Hard-won project debugging/architecture rules. MUST ATTENTION apply BEFORE forming hypothesis or writing code.
Goal: Prevent recurrence of known failure patterns โ debugging, architecture, naming, AI orchestration, environment.
Top Rules (apply always):
ExecuteInjectScopedAsync for parallel async + repo/UoW โ NEVER ExecuteUowTaskwhere python/where py) โ NEVER assume python/python3 resolvesExecuteInjectScopedAsync, NEVER ExecuteUowTask. ExecuteUowTask creates new UoW but reuses outer DI scope (same DbContext) โ parallel iterations sharing non-thread-safe DbContext silently corrupt data. ExecuteInjectScopedAsync creates new UoW + new DI scope (fresh repo per iteration).AccountUserEntityEventBusMessage = Accounts owns). Core services (Accounts, Communication) are leaders. Feature services (Growth, Talents) sending to core MUST use {CoreServiceName}...RequestBusMessage โ never define own event for core to consume.HrManagerOrHrOrPayrollHrOperationsPolicy names set members, not what it guards. Add role โ rename = broken abstraction. Rule: names express DOES/GUARDS, not CONTAINS. Test: adding/removing member forces rename? YES = content-driven = bad โ rename to purpose (e.g., HrOperationsAccessPolicy). Nuance: "Or" fine in behavioral idioms (FirstOrDefault, SuccessOrThrow) โ expresses HAPPENS, not membership.python/python3 resolves โ verify alias first. Python may not be in bash PATH under those names. Check: where python / where py. Prefer py (Windows Python Launcher) for one-liners, node if JS alternative exists.Test-specific lessons โ
docs/project-reference/integration-test-reference.mdLessons Learned section. Production-code anti-patterns โdocs/project-reference/backend-patterns-reference.mdAnti-Patterns section. Generic debugging/refactoring reminders โ System Lessons in.claude/hooks/lib/prompt-injections.cjs.
ExecuteInjectScopedAsync, NEVER ExecuteUowTask (shared DbContext = silent data corruption){CoreServiceName}...RequestBusMessagepython/python3 resolves โ run where python/where py first, use py launcher or nodeBreak work into small tasks (task tracking) before starting. Add final task: "Analyze AI mistakes & lessons learned".
Extract lessons โ ROOT CAUSE ONLY, not symptom fixes:
$learn.$code-review/$code-simplifier/$security/$lint catch this?" โ Yes โ improve review skill instead.$learn.
[TASK-PLANNING] [MANDATORY] BEFORE executing any workflow or skill step, create/update task tracking for all planned steps, then keep it synchronized as each step starts/completes.