prizmkit 1.1.111 → 1.1.113
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/VERSION.json +3 -3
- package/bundled/adapters/codex/skill-adapter.js +4 -0
- package/bundled/agents/prizm-dev-team-reviewer.md +12 -1
- package/bundled/dev-pipeline/SCHEMA_ANALYSIS.md +10 -10
- package/bundled/dev-pipeline/prizmkit_runtime/interoperability.py +1 -0
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +20 -73
- package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +290 -421
- package/bundled/dev-pipeline/scripts/generate-recovery-prompt.py +1 -1
- package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +259 -481
- package/bundled/dev-pipeline/scripts/init-bugfix-pipeline.py +34 -0
- package/bundled/dev-pipeline/scripts/init-pipeline.py +12 -0
- package/bundled/dev-pipeline/scripts/init-refactor-pipeline.py +24 -1
- package/bundled/dev-pipeline/scripts/prompt_framework.py +312 -0
- package/bundled/dev-pipeline/scripts/update-bug-status.py +87 -20
- package/bundled/dev-pipeline/scripts/update-feature-status.py +82 -16
- package/bundled/dev-pipeline/scripts/update-refactor-status.py +68 -28
- package/bundled/dev-pipeline/scripts/utils.py +171 -0
- package/bundled/dev-pipeline/templates/bootstrap-prompt.md +1 -1
- package/bundled/dev-pipeline/templates/bootstrap-tier1.md +7 -1
- package/bundled/dev-pipeline/templates/bootstrap-tier2.md +17 -19
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +21 -26
- package/bundled/dev-pipeline/templates/bug-fix-list-schema.json +9 -1
- package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +11 -8
- package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +122 -182
- package/bundled/dev-pipeline/templates/sections/bugfix-artifacts.md +16 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-critical-paths.md +12 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-mission.md +9 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-commit-report.md +31 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-critic.md +22 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-diagnose-plan.md +23 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-implement.md +20 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-init.md +9 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-manual-verification.md +15 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-review.md +29 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-reminders.md +11 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-session-context.md +7 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-session-status.md +31 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-task-contract.md +40 -0
- package/bundled/dev-pipeline/templates/sections/failure-capture.md +2 -2
- package/bundled/dev-pipeline/templates/sections/phase-browser-verification-auto.md +8 -2
- package/bundled/dev-pipeline/templates/sections/phase-browser-verification-opencli.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-browser-verification.md +7 -1
- package/bundled/dev-pipeline/templates/sections/refactor-artifacts.md +17 -0
- package/bundled/dev-pipeline/templates/sections/refactor-critical-paths.md +13 -0
- package/bundled/dev-pipeline/templates/sections/refactor-mission.md +9 -0
- package/bundled/dev-pipeline/templates/sections/refactor-phase-commit-report.md +37 -0
- package/bundled/dev-pipeline/templates/sections/refactor-phase-critic.md +22 -0
- package/bundled/dev-pipeline/templates/sections/refactor-phase-implement.md +16 -0
- package/bundled/dev-pipeline/templates/sections/refactor-phase-init.md +9 -0
- package/bundled/dev-pipeline/templates/sections/refactor-phase-plan.md +22 -0
- package/bundled/dev-pipeline/templates/sections/refactor-phase-review.md +19 -0
- package/bundled/dev-pipeline/templates/sections/refactor-reminders.md +11 -0
- package/bundled/dev-pipeline/templates/sections/refactor-session-context.md +7 -0
- package/bundled/dev-pipeline/templates/sections/refactor-session-status.md +28 -0
- package/bundled/dev-pipeline/templates/sections/refactor-task-contract.md +52 -0
- package/bundled/dev-pipeline/tests/test_generate_bootstrap_prompt.py +104 -26
- package/bundled/dev-pipeline/tests/test_generate_bugfix_prompt.py +14 -0
- package/bundled/dev-pipeline/tests/test_python_runner_parity.py +239 -0
- package/bundled/dev-pipeline/tests/test_unified_cli.py +6 -2
- package/bundled/dev-pipeline/tests/test_utils.py +66 -1
- package/bundled/skills/_metadata.json +1 -1
- package/bundled/skills/app-planner/SKILL.md +8 -7
- package/bundled/skills/app-planner/references/project-brief-guide.md +2 -2
- package/bundled/skills/app-planner/references/rules/backend/derivation-rules.md +1 -1
- package/bundled/skills/app-planner/references/rules/frontend/derivation-rules.md +1 -1
- package/bundled/skills/app-planner/references/rules-configuration.md +53 -26
- package/bundled/skills/bug-fix-workflow/SKILL.md +191 -336
- package/bundled/skills/bug-planner/SKILL.md +6 -5
- package/bundled/skills/bug-planner/references/critic-and-verification.md +3 -3
- package/bundled/skills/bug-planner/references/schema-validation.md +2 -1
- package/bundled/skills/bug-planner/scripts/validate-bug-list.py +70 -1
- package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +21 -21
- package/bundled/skills/bugfix-pipeline-launcher/references/configuration.md +2 -2
- package/bundled/skills/feature-pipeline-launcher/SKILL.md +25 -26
- package/bundled/skills/feature-planner/SKILL.md +9 -11
- package/bundled/skills/feature-planner/assets/planning-guide.md +1 -1
- package/bundled/skills/feature-planner/references/decomposition-patterns.md +1 -1
- package/bundled/skills/feature-planner/references/error-recovery.md +2 -1
- package/bundled/skills/feature-planner/references/incremental-feature-planning.md +2 -2
- package/bundled/skills/feature-planner/references/new-project-planning.md +35 -39
- package/bundled/skills/feature-planner/scripts/validate-and-generate.py +1 -1
- package/bundled/skills/feature-workflow/SKILL.md +170 -298
- package/bundled/skills/prizmkit/SKILL.md +103 -57
- package/bundled/skills/prizmkit-code-review/SKILL.md +97 -116
- package/bundled/skills/prizmkit-code-review/references/review-report-template.md +1 -0
- package/bundled/skills/prizmkit-code-review/references/reviewer-agent-prompt.md +14 -3
- package/bundled/skills/prizmkit-committer/SKILL.md +59 -47
- package/bundled/skills/prizmkit-deploy/SKILL.md +162 -381
- package/bundled/skills/prizmkit-deploy/references/database-setup.md +12 -3
- package/bundled/skills/prizmkit-deploy/references/ssh-adapter-flow.md +220 -0
- package/bundled/skills/prizmkit-implement/SKILL.md +51 -40
- package/bundled/skills/prizmkit-init/SKILL.md +4 -3
- package/bundled/skills/prizmkit-plan/SKILL.md +85 -70
- package/bundled/skills/prizmkit-prizm-docs/SKILL.md +94 -73
- package/bundled/skills/prizmkit-prizm-docs/assets/prizm-docs-format.md +20 -18
- package/bundled/skills/prizmkit-prizm-docs/references/op-init.md +11 -13
- package/bundled/skills/prizmkit-prizm-docs/references/op-update.md +18 -14
- package/bundled/skills/prizmkit-retrospective/SKILL.md +56 -48
- package/bundled/skills/prizmkit-retrospective/references/structural-sync-steps.md +79 -27
- package/bundled/skills/prizmkit-test/SKILL.md +138 -141
- package/bundled/skills/prizmkit-test/references/boundary-coverage-protocol.md +1 -1
- package/bundled/skills/prizmkit-test/references/examples.md +11 -9
- package/bundled/skills/prizmkit-test/references/test-generation-steps.md +1 -1
- package/bundled/skills/prizmkit-test/references/test-report-template.md +2 -2
- package/bundled/skills/recovery-workflow/SKILL.md +195 -256
- package/bundled/skills/recovery-workflow/evals/evals.json +21 -13
- package/bundled/skills/recovery-workflow/references/detection.md +48 -39
- package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +258 -322
- package/bundled/skills/refactor-pipeline-launcher/SKILL.md +32 -13
- package/bundled/skills/refactor-planner/SKILL.md +2 -2
- package/bundled/skills/refactor-planner/references/behavior-preservation.md +24 -19
- package/bundled/skills/refactor-planner/references/fast-path.md +2 -4
- package/bundled/skills/refactor-planner/references/planning-phases.md +2 -2
- package/bundled/skills/refactor-workflow/SKILL.md +174 -307
- package/package.json +1 -1
- package/src/scaffold.js +5 -0
- package/bundled/dev-pipeline/templates/agent-prompts/reviewer-review.md +0 -6
- package/bundled/skills/feature-workflow/references/brainstorm-guide.md +0 -137
- package/bundled/skills/refactor-workflow/references/brainstorm-guide.md +0 -116
|
@@ -1,129 +1,150 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "prizmkit-prizm-docs"
|
|
3
|
-
description: "Project documentation specification and
|
|
3
|
+
description: "Project documentation specification and management for AI-optimized progressive context loading. Defines the .prizmkit/prizm-docs/ L0/L1/L2 hierarchy, format rules, size limits, and loading protocol. Use this skill to bootstrap docs for new projects (init), check freshness (status), rebuild modules, validate format, migrate existing docs, or repair/resync docs after out-of-band drift such as manual edits, merges, or branch switches. For normal development updates after code changes, use /prizmkit-retrospective instead. Trigger on: 'initialize docs', 'check doc status', 'rebuild docs', 'validate docs', 'migrate docs', 'docs drifted', 'repair prizm docs'. (project)"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Prizm Docs - AI Documentation Framework
|
|
7
7
|
|
|
8
|
-
Full specification:
|
|
8
|
+
Full specification: `${SKILL_DIR}/assets/prizm-docs-format.md`
|
|
9
9
|
|
|
10
10
|
## Intent Routing
|
|
11
11
|
|
|
12
|
-
This skill handles
|
|
12
|
+
This skill handles documentation system operations. Determine the user's intent and execute the matching operation:
|
|
13
13
|
|
|
14
14
|
| User Intent | Operation | Trigger Phrases |
|
|
15
15
|
|---|---|---|
|
|
16
|
-
| Bootstrap new project docs |
|
|
17
|
-
|
|
|
18
|
-
| Check doc freshness |
|
|
19
|
-
| Regenerate module docs |
|
|
20
|
-
| Check format compliance |
|
|
21
|
-
| Convert existing docs |
|
|
16
|
+
| Bootstrap new project docs | Init | "initialize docs", "set up prizm docs", "bootstrap documentation" |
|
|
17
|
+
| Repair docs after out-of-band drift | Update | "docs drifted", "repair prizm docs", "resync after merge", "docs stale after branch switch" |
|
|
18
|
+
| Check doc freshness | Status | "check docs", "are docs up to date", "doc status" |
|
|
19
|
+
| Regenerate module docs | Rebuild | "rebuild docs for X", "regenerate module docs" |
|
|
20
|
+
| Check format compliance | Validate | "validate docs", "check doc format", "docs valid?" |
|
|
21
|
+
| Convert existing docs | Migrate | "migrate docs", "convert docs to prizm format" |
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
Do not route ordinary development-loop "update docs" or "sync docs" here. In normal feature/bugfix/refactor work, use `/prizmkit-retrospective`; it is the development docs writer.
|
|
24
24
|
|
|
25
25
|
## Role Clarification
|
|
26
26
|
|
|
27
|
-
**This skill vs `/prizmkit-retrospective`**:
|
|
28
|
-
|
|
29
27
|
| Aspect | `/prizmkit-prizm-docs` | `/prizmkit-retrospective` |
|
|
30
|
-
|
|
31
|
-
|
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
28
|
+
|--------|------------------------|---------------------------|
|
|
29
|
+
| Role | Documentation specification, bootstrap, health checks, migration, out-of-band repair | Normal development writer |
|
|
30
|
+
| When | Project setup, validation, rebuild, migration, docs drift after merges/manual edits | After implementation/review when code changes affect docs or durable knowledge |
|
|
31
|
+
| Writes | Initial structure, rebuilds, migrations, repair/resync operations | Incremental task-scoped updates during development |
|
|
32
|
+
| Reads | Source code structure and existing docs | Git diff, task artifacts, review/test results, changed source |
|
|
33
|
+
| Knowledge | Defines format rules and loading protocol | Extracts durable TRAPS/RULES/DECISIONS |
|
|
36
34
|
|
|
37
|
-
|
|
35
|
+
Key principle: `/prizmkit-prizm-docs` defines and repairs the documentation system. `/prizmkit-retrospective` keeps docs in sync during ordinary development.
|
|
38
36
|
|
|
39
37
|
### When to Use
|
|
40
|
-
- First-time project documentation setup
|
|
41
|
-
- Checking
|
|
42
|
-
- Rebuilding stale module docs after major changes
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
- User says "initialize docs", "check doc status", "rebuild docs", "validate docs"
|
|
38
|
+
- First-time project documentation setup
|
|
39
|
+
- Checking whether docs are fresh or valid
|
|
40
|
+
- Rebuilding stale module docs after major structural changes
|
|
41
|
+
- Migrating existing docs to Prizm format
|
|
42
|
+
- Repairing docs that drifted because of manual edits, merges, branch switches, or changes made outside the normal dev loop
|
|
46
43
|
|
|
47
44
|
### When NOT to Use
|
|
48
|
-
- Incremental doc updates after code changes → use
|
|
49
|
-
-
|
|
50
|
-
-
|
|
45
|
+
- Incremental doc updates after normal code changes → use `/prizmkit-retrospective`
|
|
46
|
+
- User wants to edit code → use `/prizmkit-plan` and `/prizmkit-implement`
|
|
47
|
+
- Project has no `.prizmkit/prizm-docs/` and the user does not want to initialize docs
|
|
51
48
|
|
|
52
49
|
## Operation: Init
|
|
53
50
|
|
|
54
|
-
Bootstrap
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
Bootstrap `.prizmkit/prizm-docs/` for the current project.
|
|
52
|
+
|
|
53
|
+
Precondition: no `.prizmkit/prizm-docs/` directory exists, or user confirms overwrite.
|
|
54
|
+
|
|
55
|
+
Read `${SKILL_DIR}/references/op-init.md` for detailed steps.
|
|
57
56
|
|
|
58
57
|
## Operation: Update
|
|
59
58
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
Repair or resync `.prizmkit/prizm-docs/` after out-of-band drift.
|
|
60
|
+
|
|
61
|
+
Precondition: `.prizmkit/prizm-docs/` exists with `root.prizm`.
|
|
62
|
+
|
|
63
|
+
Use Update only when docs drifted outside the normal development loop, such as:
|
|
64
|
+
|
|
65
|
+
- manual code edits without retrospective
|
|
66
|
+
- merges or rebases
|
|
67
|
+
- branch switches
|
|
68
|
+
- generated code movement
|
|
69
|
+
- user explicitly asks to repair stale Prizm docs
|
|
70
|
+
|
|
71
|
+
During normal feature/bugfix/refactor work, do not use Update; use `/prizmkit-retrospective` to avoid duplicate writers and conflicting edits.
|
|
72
|
+
|
|
73
|
+
Read `${SKILL_DIR}/references/op-update.md` for detailed steps.
|
|
64
74
|
|
|
65
75
|
## Operation: Status
|
|
66
76
|
|
|
67
|
-
Check freshness of all
|
|
68
|
-
|
|
69
|
-
|
|
77
|
+
Check freshness of all `.prizm` docs.
|
|
78
|
+
|
|
79
|
+
Precondition: `.prizmkit/prizm-docs/` exists with `root.prizm`.
|
|
80
|
+
|
|
81
|
+
Read `${SKILL_DIR}/references/op-status.md` for detailed steps.
|
|
70
82
|
|
|
71
83
|
## Operation: Rebuild
|
|
72
84
|
|
|
73
|
-
Regenerate docs for a specific module from scratch.
|
|
74
|
-
|
|
75
|
-
|
|
85
|
+
Regenerate docs for a specific module from scratch.
|
|
86
|
+
|
|
87
|
+
Precondition: `.prizmkit/prizm-docs/` exists and module path is valid.
|
|
88
|
+
|
|
89
|
+
Read `${SKILL_DIR}/references/op-rebuild.md` for detailed steps.
|
|
76
90
|
|
|
77
91
|
## Operation: Validate
|
|
78
92
|
|
|
79
|
-
Check format compliance and consistency of all
|
|
80
|
-
|
|
81
|
-
|
|
93
|
+
Check format compliance and consistency of all `.prizm` docs.
|
|
94
|
+
|
|
95
|
+
Precondition: `.prizmkit/prizm-docs/` exists.
|
|
96
|
+
|
|
97
|
+
Read `${SKILL_DIR}/references/op-validate.md` for detailed steps.
|
|
82
98
|
|
|
83
99
|
## Operation: Migrate
|
|
84
100
|
|
|
85
|
-
Convert existing documentation to
|
|
86
|
-
PRECONDITION: Existing docs/ or docs/AI_CONTEXT/ directory. No .prizmkit/prizm-docs/ (or user confirms overwrite).
|
|
101
|
+
Convert existing documentation to `.prizmkit/prizm-docs/` format.
|
|
87
102
|
|
|
88
|
-
|
|
89
|
-
1. DISCOVER existing docs: Scan docs/, docs/AI_CONTEXT/, README.md, ARCHITECTURE.md, and any structured documentation files.
|
|
90
|
-
2. EXTRACT information from existing docs: project metadata, module descriptions, architecture patterns, rules, decisions, dependencies.
|
|
91
|
-
3. MAP existing doc content to Prizm levels: project-wide info -> L0 root.prizm, module-level info -> L1 docs (MODULE, FILES, RESPONSIBILITY, KEY_FILES, DEPENDENCIES), detailed module info -> L2 docs (INTERFACES, DATA_FLOW, TRAPS, DECISIONS, domain-specific sections).
|
|
92
|
-
4. CONVERT prose content to KEY: value format. Strip markdown formatting, tables, diagrams. Condense explanatory text into single-line values.
|
|
93
|
-
5. GENERATE .prizmkit/prizm-docs/ structure following standard init procedure but seeded with extracted information instead of scanning source code alone.
|
|
94
|
-
6. VALIDATE migrated docs against Prizm format rules and size limits.
|
|
95
|
-
7. REPORT migration summary: files processed, content mapped, information that could not be automatically converted (requires manual review).
|
|
103
|
+
Precondition: existing `docs/`, `docs/AI_CONTEXT/`, README, or architecture docs; no `.prizmkit/prizm-docs/` unless user confirms overwrite.
|
|
96
104
|
|
|
97
|
-
|
|
105
|
+
Steps:
|
|
106
|
+
1. Discover existing docs: `docs/`, `docs/AI_CONTEXT/`, `README.md`, `ARCHITECTURE.md`, and structured documentation files.
|
|
107
|
+
2. Extract project metadata, module descriptions, architecture patterns, rules, decisions, and dependencies.
|
|
108
|
+
3. Map project-wide info to L0, module structure to L1, and behavioral details to L2.
|
|
109
|
+
4. Convert prose to KEY: value format and strip markdown tables, diagrams, and decorative formatting.
|
|
110
|
+
5. Generate `.prizmkit/prizm-docs/` using init structure seeded with extracted information.
|
|
111
|
+
6. Validate migrated docs against format rules and size limits.
|
|
112
|
+
7. Report files processed, generated `.prizm` files, and manual review items.
|
|
98
113
|
|
|
99
114
|
## Error Handling
|
|
100
115
|
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
-
|
|
116
|
+
- `root.prizm` corrupted or invalid: back it up, then rebuild affected docs from source.
|
|
117
|
+
- Broken pointers: create the missing `.prizm` file if the source module exists; remove the pointer if the source module was deleted.
|
|
118
|
+
- Size limit exceeded: consolidate L0, move L1 implementation detail to L2, trim L2 derived detail.
|
|
119
|
+
- No git history: fall back to filesystem timestamps for freshness checks and warn that accuracy is reduced.
|
|
120
|
+
|
|
121
|
+
## Key Protocols
|
|
122
|
+
|
|
123
|
+
For detailed protocol specifications, read `assets/prizm-docs-format.md`:
|
|
105
124
|
|
|
106
|
-
### Key Protocols (reference)
|
|
107
|
-
For detailed protocol specifications, see prizm-docs-format.md:
|
|
108
125
|
- Progressive Loading: Section 6.1
|
|
109
|
-
-
|
|
126
|
+
- Update/repair protocol: Section 7
|
|
110
127
|
- RULES hierarchy: Section 3.1
|
|
111
128
|
|
|
112
129
|
## Examples
|
|
113
130
|
|
|
114
|
-
**Init output
|
|
115
|
-
|
|
131
|
+
**Init output:**
|
|
132
|
+
|
|
133
|
+
```text
|
|
116
134
|
Generated .prizmkit/prizm-docs/:
|
|
117
135
|
root.prizm (L0) — 3 modules in MODULE_INDEX
|
|
118
|
-
routes.prizm (L1) —
|
|
119
|
-
models.prizm (L1) —
|
|
120
|
-
services.prizm (L1) —
|
|
136
|
+
routes.prizm (L1) — module structure and dependencies
|
|
137
|
+
models.prizm (L1) — module structure and dependencies
|
|
138
|
+
services.prizm (L1) — module structure and dependencies
|
|
121
139
|
```
|
|
122
140
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
141
|
+
L1 docs are structural indexes. Interface signatures, data flow, TRAPS, and DECISIONS belong in L2 docs.
|
|
142
|
+
|
|
143
|
+
**Out-of-band repair after merge:**
|
|
144
|
+
|
|
145
|
+
```text
|
|
146
|
+
Changed outside normal dev loop: src/routes/avatar.ts (A), src/models/user.ts (M)
|
|
147
|
+
Updated: .prizmkit/prizm-docs/routes.prizm — added avatar route file mapping
|
|
148
|
+
Created: .prizmkit/prizm-docs/routes/avatar.prizm — recorded new route interfaces and traps
|
|
149
|
+
Updated: .prizmkit/prizm-docs/models.prizm — file count changed
|
|
129
150
|
```
|
|
@@ -29,7 +29,7 @@ LICENSE: MIT
|
|
|
29
29
|
|
|
30
30
|
WHAT: Prizm is a self-maintaining documentation system where AI reads, generates, updates, and loads project context progressively.
|
|
31
31
|
WHY: Reduce AI hallucinations, minimize token waste, ensure AI has accurate project knowledge at all times.
|
|
32
|
-
HOW: Three-level progressive loading (L0 -> L1 -> L2) with
|
|
32
|
+
HOW: Three-level progressive loading (L0 -> L1 -> L2) with conditional retrospective before commits when code changes affect structure, interfaces, dependencies, behavior, or durable project knowledge.
|
|
33
33
|
|
|
34
34
|
CORE_PRINCIPLES:
|
|
35
35
|
- Token efficiency over human readability
|
|
@@ -350,7 +350,7 @@ FOR any source file at path P:
|
|
|
350
350
|
1. Walk up directory tree to find the first ancestor D where .prizmkit/prizm-docs/<D>.prizm exists
|
|
351
351
|
2. That file is the L1 doc for this source file
|
|
352
352
|
3. If P is inside a subdirectory S of D, check if .prizmkit/prizm-docs/<D>/<S>.prizm exists for L2
|
|
353
|
-
4. If no .prizm doc found, the module is undocumented (may need prizmkit-prizm-docs Update
|
|
353
|
+
4. If no .prizm doc found, the module is undocumented (may need retrospective after development or prizmkit-prizm-docs Update for out-of-band repair)
|
|
354
354
|
|
|
355
355
|
---
|
|
356
356
|
|
|
@@ -418,12 +418,12 @@ EXAMPLES:
|
|
|
418
418
|
|
|
419
419
|
## 7.1 Trigger
|
|
420
420
|
|
|
421
|
-
WHEN:
|
|
422
|
-
GOAL: Keep prizm docs synchronized with source code
|
|
421
|
+
WHEN: During normal development, run `/prizmkit-retrospective` before commits when structure, interfaces, dependencies, behavior, or durable project knowledge changed. Use `prizmkit-prizm-docs Update` only for out-of-band repair/resync after docs drifted outside the normal development loop.
|
|
422
|
+
GOAL: Keep prizm docs synchronized with source code without creating multiple competing docs writers.
|
|
423
423
|
|
|
424
424
|
## 7.2 Update Decision Logic
|
|
425
425
|
|
|
426
|
-
SUMMARY:
|
|
426
|
+
SUMMARY: For normal development, `/prizmkit-retrospective` gets changed files → maps modules → classifies (A/D/M/R) → updates docs bottom-up (L2→L1→L0) → skips if no structural or durable-knowledge impact → enforces size limits → stages. For out-of-band drift, `prizmkit-prizm-docs Update` runs the same repair shape after confirming the drift source.
|
|
427
427
|
|
|
428
428
|
DETAILED_STEPS: → ${SKILL_DIR}/references/op-update.md
|
|
429
429
|
|
|
@@ -491,20 +491,22 @@ EXCLUDE: .git/, node_modules/, vendor/, build/, dist/, __pycache__/, target/, bi
|
|
|
491
491
|
|
|
492
492
|
## 9.2 Post-Init Behavior
|
|
493
493
|
|
|
494
|
-
After initialization, L2 docs are created incrementally:
|
|
494
|
+
After initialization, L2 docs are created incrementally by retrospective when changed source files provide meaningful behavior or durable knowledge:
|
|
495
495
|
|
|
496
496
|
ON_MODIFY trigger:
|
|
497
|
-
-
|
|
498
|
-
IF .prizmkit/prizm-docs/<M>/<S>.prizm
|
|
499
|
-
AI reads the
|
|
500
|
-
|
|
497
|
+
- Before editing a file in sub-module S within module M:
|
|
498
|
+
IF .prizmkit/prizm-docs/<M>/<S>.prizm exists:
|
|
499
|
+
AI reads the relevant L2 sections.
|
|
500
|
+
ELSE:
|
|
501
|
+
AI reads the target source files as fallback and proceeds with the modification.
|
|
502
|
+
- After the change, `/prizmkit-retrospective` creates L2 if the changed files contain meaningful interfaces, data flow, traps, or decisions worth preserving.
|
|
503
|
+
- This keeps initialization lightweight while still capturing L2 depth when real change context exists.
|
|
501
504
|
|
|
502
505
|
ON_DEEP_READ trigger:
|
|
503
506
|
- When AI needs to deeply understand a module but not modify it (e.g., code review, architecture analysis, dependency tracing, explaining complex logic):
|
|
504
507
|
IF .prizmkit/prizm-docs/<M>/<S>.prizm does not exist:
|
|
505
|
-
AI reads the source files
|
|
506
|
-
-
|
|
507
|
-
- RATIONALE: Some tasks require deep understanding without editing (reviewing PRs, answering architecture questions, tracing bugs). Generating L2 during these tasks captures valuable context.
|
|
508
|
+
AI reads the relevant source files for the current task and may recommend a retrospective or repair pass if durable L2 knowledge should be preserved.
|
|
509
|
+
- Do not create placeholder L2 docs just because a module was read; create L2 only when there is meaningful behavior, interfaces, traps, or decisions to record.
|
|
508
510
|
|
|
509
511
|
---
|
|
510
512
|
|
|
@@ -517,7 +519,7 @@ The Prizm skill is defined at: ${SKILL_DIR}/SKILL.md
|
|
|
517
519
|
OPERATIONS (all invoked via the prizmkit-prizm-docs skill):
|
|
518
520
|
|
|
519
521
|
Init - Bootstrap .prizmkit/prizm-docs/ for a new project. → ${SKILL_DIR}/references/op-init.md
|
|
520
|
-
Update -
|
|
522
|
+
Update - Repair/resync docs after out-of-band drift. → ${SKILL_DIR}/references/op-update.md
|
|
521
523
|
Status - Check freshness of all docs. → ${SKILL_DIR}/references/op-status.md
|
|
522
524
|
Rebuild - Regenerate docs for a specific module. → ${SKILL_DIR}/references/op-rebuild.md
|
|
523
525
|
Validate - Check format compliance and consistency. → ${SKILL_DIR}/references/op-validate.md
|
|
@@ -548,7 +550,7 @@ JSON:
|
|
|
548
550
|
"hooks": [
|
|
549
551
|
{
|
|
550
552
|
"type": "command",
|
|
551
|
-
"command": "echo '
|
|
553
|
+
"command": "echo 'PRIZMKIT_MAINTENANCE_CHECK: Before committing, check whether /prizmkit-retrospective applies. Run it when this change affects structure, interfaces, dependencies, behavior, or durable TRAPS/RULES/DECISIONS. Skip it for direct edits with no docs impact. Then proceed with /prizmkit-committer for the actual git commit.'"
|
|
552
554
|
}
|
|
553
555
|
]
|
|
554
556
|
}
|
|
@@ -571,12 +573,12 @@ KEYWORDS_DETECTED: commit, push, finish, done, ship, merge, PR, pull request, /c
|
|
|
571
573
|
|
|
572
574
|
The hook configuration above is specific to CodeBuddy Code.
|
|
573
575
|
For other AI coding assistants:
|
|
574
|
-
- Cursor: Use .cursorrules file to add the
|
|
576
|
+
- Cursor: Use .cursorrules file to add the conditional retrospective protocol as a rule
|
|
575
577
|
- Aider: Use .aider.conf.yml conventions section
|
|
576
578
|
- Continue: Use .continue/config.json customInstructions
|
|
577
|
-
- Generic: Add the
|
|
579
|
+
- Generic: Add the conditional retrospective protocol text to whatever system prompt or rules file the tool supports
|
|
578
580
|
|
|
579
|
-
The core requirement is: before
|
|
581
|
+
The core requirement is: before commit, AI must check whether affected `.prizmkit/prizm-docs/` files need retrospective updates. Run `/prizmkit-retrospective` when the change affects structure, interfaces, dependencies, behavior, or durable TRAPS/RULES/DECISIONS; skip it for direct edits with no docs impact.
|
|
580
582
|
|
|
581
583
|
---
|
|
582
584
|
|
|
@@ -21,8 +21,8 @@ STEPS:
|
|
|
21
21
|
- Top-level module M → write .prizmkit/prizm-docs/<M>.prizm (include SUBDIRS section with pointers to sub-module docs)
|
|
22
22
|
- Sub-module S inside M → write .prizmkit/prizm-docs/<M>/<S>.prizm
|
|
23
23
|
Each L1 includes MODULE (full relative path), FILES count, RESPONSIBILITY, SUBDIRS with pointers, KEY_FILES (5-10 most important), DEPENDENCIES (imports, imported-by, external), RULES (1-3 most critical only). L1 does NOT include INTERFACES, DATA_FLOW, TRAPS, or DECISIONS (those are L2, generated lazily). Max 4KB each.
|
|
24
|
-
6. Skip L2 docs during init — L2
|
|
25
|
-
7. Configure UserPromptSubmit hook in platform settings per ${SKILL_DIR}/assets/prizm-docs-format.md
|
|
24
|
+
6. Skip L2 docs during init — L2 docs are created after real context exists, not as placeholders. During implementation, if relevant L2 is missing, the implementing skill reads target source files as fallback and proceeds. `/prizmkit-retrospective` creates or updates L2 after the change only when durable structure, behavior, dependencies, interfaces, or TRAPS exist. Explicit `/prizmkit-prizm-docs` repair/rebuild may also create L2 when fixing out-of-band doc drift.
|
|
25
|
+
7. Configure UserPromptSubmit hook in platform settings per ${SKILL_DIR}/assets/prizm-docs-format.md Section 11.
|
|
26
26
|
8. Validate all generated docs: size limits (L0 <= 4KB, L1 <= 4KB), pointer resolution (every -> reference resolves), no circular dependencies, KEY: value format compliance, no anti-patterns (prose, code blocks, markdown headers), L1 does not contain INTERFACES/DATA_FLOW/TRAPS/DECISIONS, no CHANGELOG sections/files, no UPDATED/date metadata, no feature/bug/refactor/task/session/run/pipeline/workflow IDs, no branch names, no absolute worktree paths, and no `.prizmkit/specs` / `.prizmkit/dev-pipeline` artifact paths.
|
|
27
27
|
9. Report summary: modules discovered, L1 docs generated, files excluded, warnings.
|
|
28
28
|
|
|
@@ -30,16 +30,14 @@ OUTPUT: List of generated files, module count, and validation results.
|
|
|
30
30
|
|
|
31
31
|
## Post-Init Behavior
|
|
32
32
|
|
|
33
|
-
After initialization, L2 docs are created
|
|
33
|
+
After initialization, L2 docs are created only when durable context exists:
|
|
34
34
|
|
|
35
|
-
ON_MODIFY
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
- This ensures L2 docs have real depth, written when AI has actual context
|
|
35
|
+
ON_MODIFY behavior:
|
|
36
|
+
- When an AI modifies a file in sub-module S within module M and `.prizmkit/prizm-docs/<M>/<S>.prizm` does not exist, the implementation reads the source files in S as fallback context and proceeds.
|
|
37
|
+
- Do not block implementation only to create a placeholder L2 doc.
|
|
38
|
+
- After the change, run `/prizmkit-retrospective` when structure, interfaces, dependencies, behavior, or durable TRAPS changed; retrospective creates or updates L2 then.
|
|
40
39
|
|
|
41
|
-
ON_DEEP_READ
|
|
42
|
-
- When AI needs
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
- This ensures L2 docs are available for read-heavy analysis tasks, not just modifications
|
|
40
|
+
ON_DEEP_READ behavior:
|
|
41
|
+
- When an AI needs deep understanding but L2 is absent, read the relevant source files directly as fallback context.
|
|
42
|
+
- Create L2 through `/prizmkit-retrospective` after normal development work, or through explicit `/prizmkit-prizm-docs` repair/rebuild when fixing out-of-band doc drift.
|
|
43
|
+
- Do not create L2 merely because a module was read; L2 should capture durable knowledge, not transient investigation notes.
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
# Operation: Update —
|
|
1
|
+
# Operation: Update — Out-of-Band Repair/Resync
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Repair `.prizmkit/prizm-docs/` after docs drifted outside the normal development loop.
|
|
4
4
|
|
|
5
|
-
PRECONDITION:
|
|
5
|
+
PRECONDITION: `.prizmkit/prizm-docs/` exists with `root.prizm`.
|
|
6
|
+
|
|
7
|
+
Use this operation for manual edits, merges, rebases, branch switches, generated code movement, or other changes that did not pass through `/prizmkit-retrospective`. During ordinary feature/bugfix/refactor work, use `/prizmkit-retrospective` instead.
|
|
6
8
|
|
|
7
9
|
STEPS:
|
|
8
|
-
1.
|
|
9
|
-
2. Map changed files to modules by matching
|
|
10
|
-
3. Classify each change: A (added) -> new KEY_FILES entries
|
|
11
|
-
4. Update affected docs: L2 first
|
|
12
|
-
5.
|
|
13
|
-
6.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
1. Identify drift source. Prefer explicit user context; otherwise inspect git changes with `git diff --cached --name-status`, then `git diff --name-status`. If no git changes exist, run a bounded rescan comparing code structure against existing docs.
|
|
11
|
+
2. Map changed files to modules by matching MODULE_INDEX or MODULE_GROUPS in `root.prizm`.
|
|
12
|
+
3. Classify each change: A (added) -> new KEY_FILES entries; D (deleted) -> remove entries and update counts; M (modified) -> check dependency/interface/data-flow impact; R (renamed) -> update path references.
|
|
13
|
+
4. Update affected docs bottom-up: L2 first for INTERFACES/DATA_FLOW/DEPENDENCIES/TRAPS/DECISIONS, then L1 for FILES/KEY_FILES/SUBDIRS/DEPENDENCIES, then L0 only for structural module changes. L1 does not contain INTERFACES, DATA_FLOW, TRAPS, or DECISIONS.
|
|
14
|
+
5. Preserve `PROJECT_BRIEF:` in `root.prizm`; it is managed by `/prizmkit-init`.
|
|
15
|
+
6. Do not write CHANGELOG sections/files, UPDATED/date metadata, feature/bug/refactor/task/session/run/pipeline/workflow IDs, branch names, absolute worktree paths, or `.prizmkit/specs` / `.prizmkit/dev-pipeline` artifact paths.
|
|
16
|
+
7. Skip updates for comments/whitespace/formatting-only changes, `.prizm`-only changes, and test-only changes that reveal no durable boundaries, traps, interface constraints, behavior rules, or regression knowledge.
|
|
17
|
+
8. If a new directory qualifies as a module and matches no existing module, create L1 immediately and add it to MODULE_INDEX or MODULE_GROUPS. Create L2 only when source files contain meaningful behavior worth documenting.
|
|
18
|
+
9. During full rescan mode, check for missing L2 docs only for modules with meaningful source behavior. Create L2 docs when the missing detail would help future AI work; do not create empty placeholder L2 files.
|
|
19
|
+
10. Enforce size limits: L0 <= 4KB, L1 <= 4KB, L2 <= 5KB.
|
|
20
|
+
11. Validate memory hygiene and format compliance.
|
|
21
|
+
12. Stage updated `.prizm` files with `git add .prizmkit/prizm-docs/` only after reviewing the repair summary.
|
|
18
22
|
|
|
19
|
-
OUTPUT: List
|
|
23
|
+
OUTPUT: List updated, created, removed, and skipped docs with reasons. Explicitly state that this was an out-of-band repair/resync, not a normal development retrospective.
|
|
@@ -1,87 +1,95 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "prizmkit-retrospective"
|
|
3
|
-
description: "Incremental .prizmkit/prizm-docs/ maintainer
|
|
3
|
+
description: "Incremental .prizmkit/prizm-docs/ maintainer and normal development docs writer. Performs structural sync for changed modules and injects durable TRAPS/RULES/DECISIONS when feature, bugfix, refactor, or test work creates lasting project knowledge. Run after code review or implementation when the chosen lifecycle path changed structure, interfaces, dependencies, behavior, or durable knowledge, and before committing those changes. Trigger on: 'retrospective', 'retro', 'update docs', 'sync docs', 'wrap up', 'done with feature', 'feature complete'. (project)"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# PrizmKit Retrospective
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|-------|----------|---------|---------|
|
|
10
|
-
| **Architecture Index** | `.prizmkit/prizm-docs/` | MODULE, FILES, INTERFACES, DEPENDENCIES, TRAPS, RULES, DECISIONS | AI quickly locates code structure, interfaces, known pitfalls, and key design decisions |
|
|
8
|
+
`/prizmkit-retrospective` is the normal development writer for `.prizmkit/prizm-docs/`.
|
|
11
9
|
|
|
12
|
-
|
|
10
|
+
It performs two jobs:
|
|
13
11
|
|
|
14
|
-
1. **Structural Sync** — reflect
|
|
15
|
-
2. **
|
|
12
|
+
1. **Structural Sync** — reflect changed code structure, interfaces, dependencies, and file mappings in `.prizmkit/prizm-docs/`.
|
|
13
|
+
2. **Knowledge Injection** — add durable TRAPS, RULES, and DECISIONS discovered during the task.
|
|
16
14
|
|
|
17
|
-
For
|
|
15
|
+
For first-time documentation setup, validation, rebuild, migration, or out-of-band repair after docs drift, use `/prizmkit-prizm-docs` instead.
|
|
18
16
|
|
|
19
17
|
## When to Use
|
|
20
18
|
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
19
|
+
- Full path: after code review passes and before commit when code/docs knowledge changed.
|
|
20
|
+
- Fast path: before commit only when structure, interfaces, dependencies, behavior, or durable project knowledge changed.
|
|
21
|
+
- Bug fixes: run structural sync when the fix changes interfaces/dependencies/observable behavior; run knowledge injection only when the fix reveals durable TRAPS/RULES/DECISIONS.
|
|
22
|
+
- Test-only changes: run only when tests reveal durable boundaries, traps, interface constraints, behavior rules, or regression knowledge worth preserving.
|
|
23
|
+
- User says "retrospective", "retro", "update docs", "sync docs", or "wrap up" during normal development.
|
|
24
|
+
|
|
25
|
+
## When NOT to Use
|
|
26
|
+
|
|
27
|
+
- Direct edit with no structural, behavioral, dependency, interface, or durable-knowledge change.
|
|
28
|
+
- Only comments, whitespace, or formatting changed.
|
|
29
|
+
- Only `.prizm` files changed — avoid circular updates.
|
|
30
|
+
- Test-only changes that merely add coverage for already documented behavior and reveal no new durable knowledge.
|
|
31
|
+
- Out-of-band doc repair/resync after merges or branch switches — use `/prizmkit-prizm-docs` Update/Rebuild/Validate.
|
|
25
32
|
|
|
26
33
|
## Input
|
|
27
34
|
|
|
28
35
|
| Parameter | Required | Description |
|
|
29
36
|
|-----------|----------|-------------|
|
|
30
|
-
| `artifact_dir` | No | Directory containing spec.md
|
|
37
|
+
| `artifact_dir` | No | Directory containing `spec.md`, `plan.md`, and optionally `review-report.md`. If omitted, scan `.prizmkit/` subdirectories for the most recently modified directory with a `plan.md`. When invoked as a handoff step, reuse the caller's `artifact_dir` rather than re-detecting. If no artifact directory is found, run standalone structural sync from `git diff`. |
|
|
31
38
|
|
|
32
|
-
##
|
|
39
|
+
## Job 1: Structural Sync
|
|
33
40
|
|
|
34
|
-
-
|
|
35
|
-
- Only test files changed — no module-level impact
|
|
36
|
-
- Only .prizm files changed — avoid circular updates
|
|
41
|
+
Synchronize `.prizmkit/prizm-docs/` structure with actual codebase changes from this session.
|
|
37
42
|
|
|
38
|
-
|
|
43
|
+
Read `${SKILL_DIR}/references/structural-sync-steps.md` for the detailed procedure.
|
|
39
44
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
45
|
+
Key outputs:
|
|
46
|
+
- L1 file counts and module mappings
|
|
47
|
+
- L2 KEY_FILES / INTERFACES / DATA_FLOW / DEPENDENCIES for affected diff files
|
|
48
|
+
- New L1/L2 docs when newly changed source directories require them
|
|
49
|
+
- Stale TRAPS cleanup when needed
|
|
43
50
|
|
|
44
|
-
|
|
51
|
+
Memory hygiene: `.prizmkit/prizm-docs/` must not contain CHANGELOG sections/files, UPDATED/date metadata, feature/bug/refactor/task/session/run/pipeline/workflow IDs, branch names, absolute worktree paths, or `.prizmkit/specs` / `.prizmkit/dev-pipeline` artifact paths. Convert artifact-scoped wording into durable product/domain language before writing.
|
|
45
52
|
|
|
46
|
-
|
|
53
|
+
## Job 2: Knowledge Injection
|
|
47
54
|
|
|
48
|
-
|
|
55
|
+
Inject newly discovered durable project knowledge into architecture docs.
|
|
49
56
|
|
|
50
|
-
|
|
51
|
-
Inject newly discovered project knowledge (TRAPS, RULES, DECISIONS) into architecture docs.
|
|
52
|
-
→ Read `${SKILL_DIR}/references/knowledge-injection-steps.md` for the detailed procedure.
|
|
57
|
+
Read `${SKILL_DIR}/references/knowledge-injection-steps.md` for the detailed procedure.
|
|
53
58
|
|
|
54
|
-
|
|
55
|
-
- Verdict is `PASS` → proceed
|
|
56
|
-
- Verdict is `NEEDS_FIXES` → **skip Job 2** — do not inject knowledge for code that hasn't passed review. Output warning: "Review report has unresolved findings. Skipping knowledge injection."
|
|
57
|
-
- No `review-report.md` found → proceed with warning
|
|
58
|
-
- No artifact directory (standalone mode) → skip Job 2, only Job 1 runs
|
|
59
|
+
### Review Gate
|
|
59
60
|
|
|
60
|
-
|
|
61
|
+
Before Job 2, check `review-report.md` in the artifact directory when present:
|
|
61
62
|
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
|
|
66
|
-
• Dependency additions/removals
|
|
67
|
-
• Observable behavior changes to existing features
|
|
68
|
-
• Newly discovered TRAPs (gotchas/pitfalls)
|
|
69
|
-
- When any of the above apply, run full retrospective (Job 1 + Job 2).
|
|
63
|
+
- Verdict `PASS` → proceed.
|
|
64
|
+
- Verdict `NEEDS_FIXES` → skip Job 2 and warn: "Review report has unresolved findings. Skipping knowledge injection."
|
|
65
|
+
- No `review-report.md` → proceed with warning for Fast path or standalone mode.
|
|
66
|
+
- No artifact directory → skip Job 2 unless the user explicitly provides durable knowledge to record.
|
|
70
67
|
|
|
71
|
-
|
|
68
|
+
### Knowledge Injection Triggers
|
|
72
69
|
|
|
73
|
-
|
|
70
|
+
Run Job 2 when the task produced durable knowledge such as:
|
|
71
|
+
|
|
72
|
+
- New TRAPS, gotchas, race conditions, or surprising coupling
|
|
73
|
+
- New architectural rules or decisions
|
|
74
|
+
- Interface signature or contract changes
|
|
75
|
+
- Dependency additions/removals that affect module behavior
|
|
76
|
+
- Observable behavior changes to existing features
|
|
77
|
+
- Test-only discoveries that document new boundary conditions, regression rules, or interface constraints
|
|
78
|
+
|
|
79
|
+
Skip Job 2 for pure refactors with no durable design or behavior knowledge.
|
|
80
|
+
|
|
81
|
+
## Final: Stage Docs
|
|
74
82
|
|
|
75
|
-
|
|
83
|
+
Stage doc changes only after verifying they are intended:
|
|
76
84
|
|
|
77
|
-
**3a.** Stage all doc changes:
|
|
78
85
|
```bash
|
|
79
86
|
git add .prizmkit/prizm-docs/
|
|
80
87
|
```
|
|
81
88
|
|
|
82
|
-
|
|
89
|
+
Do not stage unrelated files.
|
|
83
90
|
|
|
84
91
|
## Output
|
|
85
92
|
|
|
86
|
-
- `.prizmkit/prizm-docs/*.prizm`
|
|
87
|
-
-
|
|
93
|
+
- Updated `.prizmkit/prizm-docs/*.prizm` files when sync or knowledge injection applies
|
|
94
|
+
- Summary of updated, created, and skipped docs with reasons
|
|
95
|
+
- Handoff: `/prizmkit-committer`
|