@theglitchking/persistent-planning 3.0.1 → 3.4.0
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.documentation/INDEX.md +224 -0
- package/.documentation/README.md +90 -0
- package/.documentation/REGISTRY.md +80 -0
- package/.documentation/agents/INDEX.md +43 -0
- package/.documentation/agents/REGISTRY.md +38 -0
- package/.documentation/api/INDEX.md +43 -0
- package/.documentation/api/REGISTRY.md +38 -0
- package/.documentation/architecture/INDEX.md +50 -0
- package/.documentation/architecture/REGISTRY.md +57 -0
- package/{docs/reference.md → .documentation/architecture/context-engineering-principles.md} +20 -1
- package/{docs → .documentation/architecture}/lg-mode.md +33 -8
- package/.documentation/architecture/lg-plan-artifact-lifecycle.md +104 -0
- package/.documentation/architecture/skill-linking-and-reclaim.md +84 -0
- package/.documentation/archive/README.md +46 -0
- package/.documentation/backups/INDEX.md +43 -0
- package/.documentation/backups/REGISTRY.md +38 -0
- package/.documentation/database/INDEX.md +43 -0
- package/.documentation/database/REGISTRY.md +38 -0
- package/.documentation/devops/INDEX.md +43 -0
- package/.documentation/devops/REGISTRY.md +38 -0
- package/.documentation/drafts/.gitkeep +1 -0
- package/.documentation/features/INDEX.md +43 -0
- package/.documentation/features/REGISTRY.md +38 -0
- package/.documentation/plans/INDEX.md +43 -0
- package/.documentation/plans/REGISTRY.md +38 -0
- package/.documentation/procedures/INDEX.md +43 -0
- package/.documentation/procedures/REGISTRY.md +53 -0
- package/.documentation/procedures/plan-completion-and-archive.md +185 -0
- package/.documentation/procedures/plugin-update-delivery.md +99 -0
- package/.documentation/quickstart/INDEX.md +42 -0
- package/.documentation/quickstart/REGISTRY.md +51 -0
- package/{docs → .documentation/quickstart}/examples.md +20 -0
- package/.documentation/reference/INDEX.md +49 -0
- package/.documentation/reference/REGISTRY.md +55 -0
- package/.documentation/reference/mandatory-frontmatter.md +71 -0
- package/.documentation/reference/skill-version-marker.md +70 -0
- package/{docs → .documentation/reference}/workspace-json.md +11 -5
- package/.documentation/security/INDEX.md +43 -0
- package/.documentation/security/REGISTRY.md +38 -0
- package/.documentation/standards/INDEX.md +43 -0
- package/.documentation/standards/REGISTRY.md +53 -0
- package/{docs → .documentation/standards}/atom-granularity.md +12 -5
- package/.documentation/standards/mandatory-closing-phases.md +145 -0
- package/.documentation/testing/INDEX.md +42 -0
- package/.documentation/testing/REGISTRY.md +51 -0
- package/.documentation/testing/test-suite.md +126 -0
- package/.documentation/troubleshooting/INDEX.md +43 -0
- package/.documentation/troubleshooting/REGISTRY.md +53 -0
- package/.documentation/troubleshooting/plan-never-reads-complete.md +109 -0
- package/.documentation/troubleshooting/stale-skill-dir-drift.md +115 -0
- package/.documentation/workflows/INDEX.md +43 -0
- package/.documentation/workflows/REGISTRY.md +38 -0
- package/CHANGELOG.md +198 -0
- package/README.md +67 -7
- package/bin/persistent-planning.js +56 -6
- package/commands/archive-plan.md +66 -0
- package/commands/plan-status.md +62 -0
- package/commands/start-atom.md +3 -3
- package/commands/start-planning.md +2 -2
- package/commands/start-task.md +2 -2
- package/hooks/session-start.js +191 -8
- package/package.json +6 -3
- package/scripts/archive-plan.sh +143 -0
- package/scripts/init-atom.sh +7 -0
- package/scripts/init-phase.sh +58 -6
- package/scripts/init-planning.sh +39 -4
- package/scripts/init-task.sh +7 -0
- package/scripts/lib/planning.sh +122 -0
- package/scripts/lib/skill-link.js +177 -0
- package/scripts/link-skills.js +38 -0
- package/scripts/plan-status.sh +196 -0
- package/skills/persistent-planning/SKILL.md +37 -9
- package/templates/lg/phase.md +22 -3
- package/templates/lg/task.md +4 -3
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Plans Documentation Index
|
|
3
|
+
tier: reference
|
|
4
|
+
domains: [plans]
|
|
5
|
+
status: active
|
|
6
|
+
last_updated: '2026-09-04'
|
|
7
|
+
version: '1.0.0'
|
|
8
|
+
purpose: Complete listing of plans documentation
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Plans Documentation
|
|
12
|
+
|
|
13
|
+
> Planning documents, roadmaps, proposals
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
- **Total Documents:** 0
|
|
18
|
+
- **Domain:** `plans/`
|
|
19
|
+
- **Category:** advanced
|
|
20
|
+
- **Load Priority:** 3/10
|
|
21
|
+
|
|
22
|
+
## Documents
|
|
23
|
+
|
|
24
|
+
*No documents in this domain yet.*
|
|
25
|
+
|
|
26
|
+
To add a document:
|
|
27
|
+
|
|
28
|
+
1. Create a markdown file in this directory
|
|
29
|
+
2. Add YAML frontmatter with required metadata
|
|
30
|
+
3. Run `npx hit-em-with-the-docs integrate <file>`
|
|
31
|
+
## Keywords
|
|
32
|
+
|
|
33
|
+
This domain covers: plan, plans, planning, roadmap, proposal, proposals, rfc, design-doc, specification, spec
|
|
34
|
+
|
|
35
|
+
## Related Domains
|
|
36
|
+
|
|
37
|
+
- [Agents](../agents/) - Expert agent documentation, specialty matrix
|
|
38
|
+
- [Backups](../backups/) - Backup/restore guides, disaster recovery
|
|
39
|
+
- [Troubleshooting](../troubleshooting/) - Debug guides, common issues, solutions
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
*Last updated: 2026-09-04*
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Plans Registry
|
|
3
|
+
tier: reference
|
|
4
|
+
domains: [plans]
|
|
5
|
+
status: active
|
|
6
|
+
last_updated: '2026-09-04'
|
|
7
|
+
version: '1.0.0'
|
|
8
|
+
purpose: Quick reference for plans documentation
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Plans Registry
|
|
12
|
+
|
|
13
|
+
> Quick reference for planning documents, roadmaps, proposals.
|
|
14
|
+
|
|
15
|
+
## At a Glance
|
|
16
|
+
|
|
17
|
+
| Metric | Value |
|
|
18
|
+
|--------|-------|
|
|
19
|
+
| Documents | 0 |
|
|
20
|
+
| Category | advanced |
|
|
21
|
+
| Load Priority | 3/10 |
|
|
22
|
+
|
|
23
|
+
## Documents
|
|
24
|
+
|
|
25
|
+
*No documents in this domain yet.*
|
|
26
|
+
|
|
27
|
+
## Keywords
|
|
28
|
+
|
|
29
|
+
`plan` `plans` `planning` `roadmap` `proposal` `proposals` `rfc` `design-doc` `specification` `spec` `milestone` `timeline` `schedule` `project` `initiative`
|
|
30
|
+
|
|
31
|
+
## See Also
|
|
32
|
+
|
|
33
|
+
- [Full Index](INDEX.md) - Complete document listing
|
|
34
|
+
- [Root Index](../INDEX.md) - All domains
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
*Last updated: 2026-09-04*
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Procedures Documentation Index
|
|
3
|
+
tier: reference
|
|
4
|
+
domains: [procedures]
|
|
5
|
+
status: active
|
|
6
|
+
last_updated: '2026-09-04'
|
|
7
|
+
version: '1.0.0'
|
|
8
|
+
purpose: Complete listing of procedures documentation
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Procedures Documentation
|
|
12
|
+
|
|
13
|
+
> Step-by-step operational procedures (SOP)
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
- **Total Documents:** 2
|
|
18
|
+
- **Domain:** `procedures/`
|
|
19
|
+
- **Category:** features
|
|
20
|
+
- **Load Priority:** 6/10
|
|
21
|
+
|
|
22
|
+
## Documents
|
|
23
|
+
|
|
24
|
+
### Guides
|
|
25
|
+
|
|
26
|
+
| Document | Status | Updated | Words |
|
|
27
|
+
|----------|--------|---------|-------|
|
|
28
|
+
| [Plan Completion and Archive](plan-completion-and-archive.md) | active | 2026-08-31 | 812 |
|
|
29
|
+
| [Plugin update delivery — what actually runs, and when](plugin-update-delivery.md) | active | 2026-09-04 | 539 |
|
|
30
|
+
|
|
31
|
+
## Keywords
|
|
32
|
+
|
|
33
|
+
This domain covers: procedure, procedures, sop, standard-operating-procedure, step, steps, operational, operation, operations, runbook
|
|
34
|
+
|
|
35
|
+
## Related Domains
|
|
36
|
+
|
|
37
|
+
- [Workflows](../workflows/) - Process documentation, multi-step operations
|
|
38
|
+
- [Features](../features/) - Feature implementation guides, admin docs
|
|
39
|
+
- [Quickstart](../quickstart/) - Setup guides, dev workflow, onboarding
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
*Last updated: 2026-09-04*
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Procedures Registry
|
|
3
|
+
tier: reference
|
|
4
|
+
domains: [procedures]
|
|
5
|
+
status: active
|
|
6
|
+
last_updated: '2026-09-04'
|
|
7
|
+
version: '1.0.0'
|
|
8
|
+
purpose: Quick reference for procedures documentation
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Procedures Registry
|
|
12
|
+
|
|
13
|
+
> Quick reference for step-by-step operational procedures (sop).
|
|
14
|
+
|
|
15
|
+
## At a Glance
|
|
16
|
+
|
|
17
|
+
| Metric | Value |
|
|
18
|
+
|--------|-------|
|
|
19
|
+
| Documents | 2 |
|
|
20
|
+
| Category | features |
|
|
21
|
+
| Load Priority | 6/10 |
|
|
22
|
+
|
|
23
|
+
## Active Documents
|
|
24
|
+
|
|
25
|
+
- [Plan Completion and Archive](plan-completion-and-archive.md)
|
|
26
|
+
- [Plugin update delivery — what actually runs, and when](plugin-update-delivery.md)
|
|
27
|
+
|
|
28
|
+
## Recently Updated
|
|
29
|
+
|
|
30
|
+
- [Plugin update delivery — what actually runs, and when](plugin-update-delivery.md) - 2026-09-04
|
|
31
|
+
- [Plan Completion and Archive](plan-completion-and-archive.md) - 2026-08-31
|
|
32
|
+
|
|
33
|
+
## By Status
|
|
34
|
+
|
|
35
|
+
| Status | Count |
|
|
36
|
+
|--------|-------|
|
|
37
|
+
| active | 2 |
|
|
38
|
+
| draft | 0 |
|
|
39
|
+
| deprecated | 0 |
|
|
40
|
+
| archived | 0 |
|
|
41
|
+
|
|
42
|
+
## Keywords
|
|
43
|
+
|
|
44
|
+
`procedure` `procedures` `sop` `standard-operating-procedure` `step` `steps` `operational` `operation` `operations` `runbook` `playbook` `checklist` `process` `manual`
|
|
45
|
+
|
|
46
|
+
## See Also
|
|
47
|
+
|
|
48
|
+
- [Full Index](INDEX.md) - Complete document listing
|
|
49
|
+
- [Root Index](../INDEX.md) - All domains
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
*Last updated: 2026-09-04*
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Plan Completion and Archive
|
|
3
|
+
tier: guide
|
|
4
|
+
domains:
|
|
5
|
+
- procedures
|
|
6
|
+
audience:
|
|
7
|
+
- developers
|
|
8
|
+
tags: []
|
|
9
|
+
status: active
|
|
10
|
+
last_updated: '2026-08-31'
|
|
11
|
+
version: 1.0.0
|
|
12
|
+
purpose: How persistent-planning decides a plan is finished, how that reaches
|
|
13
|
+
the agent automatically, and the procedure for retiring a completed plan into
|
|
14
|
+
the gitignored .planning/.archive/ directory.
|
|
15
|
+
estimated_read_time: 5 minutes
|
|
16
|
+
word_count: 812
|
|
17
|
+
last_validated: '2026-08-31'
|
|
18
|
+
backlinks: []
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Plan Completion and Archive
|
|
22
|
+
|
|
23
|
+
## What it is
|
|
24
|
+
|
|
25
|
+
Two things that only make sense together:
|
|
26
|
+
|
|
27
|
+
- **Status tracking** — a plan's completion is *derived from the plan artifacts*,
|
|
28
|
+
not stored anywhere else.
|
|
29
|
+
- **Archive** — a completed plan is moved out of the active `.planning/` tree into
|
|
30
|
+
a gitignored `.planning/.archive/`, so what remains under `.planning/` is only
|
|
31
|
+
ever live work.
|
|
32
|
+
|
|
33
|
+
## Why it matters
|
|
34
|
+
|
|
35
|
+
The failure this prevents is a finished plan that nobody retires. It sits in
|
|
36
|
+
`.planning/`, and every future session — human or agent — re-reads it, re-reasons
|
|
37
|
+
about whether it is still relevant, and burns context deciding it isn't. Multiply
|
|
38
|
+
by a dozen plans and the working-memory directory becomes the thing you have to
|
|
39
|
+
work around.
|
|
40
|
+
|
|
41
|
+
The reason completion is *derived* rather than *declared* is drift. A `done: true`
|
|
42
|
+
flag someone has to remember to set is wrong the moment they forget, and nothing
|
|
43
|
+
detects that. Checkbox state cannot drift from the plan, because it **is** the
|
|
44
|
+
plan. Checking the last box is the completion signal; there is no second step to
|
|
45
|
+
forget.
|
|
46
|
+
|
|
47
|
+
## Where it lives
|
|
48
|
+
|
|
49
|
+
| Piece | Path |
|
|
50
|
+
|---|---|
|
|
51
|
+
| Status scan (single implementation) | `scripts/plan-status.sh` |
|
|
52
|
+
| Archive operation | `scripts/archive-plan.sh` |
|
|
53
|
+
| Session-start nudge | `hooks/session-start.js` (shells out to `plan-status.sh --nudge`) |
|
|
54
|
+
| Slash commands | `commands/plan-status.md`, `commands/archive-plan.md` |
|
|
55
|
+
| Archived plans | `.planning/.archive/<slug>/` (gitignored) |
|
|
56
|
+
|
|
57
|
+
## The completion rule
|
|
58
|
+
|
|
59
|
+
A plan is **COMPLETE** when either holds:
|
|
60
|
+
|
|
61
|
+
1. Every checkbox in every markdown file under the plan directory is checked, or
|
|
62
|
+
2. The plan's top-level artifact (`phase.md`, `task_plan.md`, or `task.md`)
|
|
63
|
+
declares `status: done` in frontmatter.
|
|
64
|
+
|
|
65
|
+
Other verdicts: `blocked` (an atom carries `status: blocked`), `empty` (no
|
|
66
|
+
checkboxes yet), `in progress` (anything else), `archived` (already stamped).
|
|
67
|
+
|
|
68
|
+
Because plans are seeded with [mandatory closing phases](../standards/mandatory-closing-phases.md),
|
|
69
|
+
a plan cannot read COMPLETE until its work has been tested *and* documented. The
|
|
70
|
+
two features are deliberately coupled: completion means finished, not "the fun
|
|
71
|
+
part is finished."
|
|
72
|
+
|
|
73
|
+
## How the agent finds out
|
|
74
|
+
|
|
75
|
+
Three escalating surfaces, cheapest first:
|
|
76
|
+
|
|
77
|
+
1. **SessionStart hook.** On every session, the hook runs `plan-status.sh --nudge`
|
|
78
|
+
and merges any result into the session's context: *"persistent-planning: 1
|
|
79
|
+
plan(s) complete but not archived — <slug>."* Silent when there is nothing to
|
|
80
|
+
say, so it costs nothing in the normal case.
|
|
81
|
+
2. **`/plan-status`.** The full table, on demand.
|
|
82
|
+
3. **The plan artifact itself.** Both templates carry an `## On Completion`
|
|
83
|
+
section stating the rule and the archive command, so an agent reading only the
|
|
84
|
+
plan still learns the protocol.
|
|
85
|
+
|
|
86
|
+
## How to operate it
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
/plan-status # what is in progress, blocked, complete
|
|
90
|
+
/archive-plan <slug> # retire one completed plan
|
|
91
|
+
/archive-plan --all-complete # retire every completed plan
|
|
92
|
+
/archive-plan <slug> --dry-run # show the move without making it
|
|
93
|
+
/archive-plan <slug> --force # retire an unfinished plan (deliberate)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Machine-readable forms for scripts and subagents:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
bash scripts/plan-status.sh --complete # one complete plan slug per line
|
|
100
|
+
bash scripts/plan-status.sh --nudge # one line, or nothing
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Archiving performs four steps:
|
|
104
|
+
|
|
105
|
+
1. Verifies completion (skipped under `--force`).
|
|
106
|
+
2. Ensures `.planning/.archive/` exists and is in `.gitignore`.
|
|
107
|
+
3. Moves `.planning/<slug>/` → `.planning/.archive/<slug>/`, preferring `git mv`
|
|
108
|
+
when the plan is tracked so history follows it.
|
|
109
|
+
4. Stamps the top-level artifact: `status: archived` + `archived_on` in
|
|
110
|
+
frontmatter, or a dated footer for sm plans that have none.
|
|
111
|
+
|
|
112
|
+
**Nothing is ever deleted.** Archiving is a move plus a stamp.
|
|
113
|
+
|
|
114
|
+
## Restoring an archived plan
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
mv .planning/.archive/<slug> .planning/<slug>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Then set `status:` back to `active` and remove the `archived_on` stamp. The plan
|
|
121
|
+
resumes reading as in-progress the moment a box is unchecked.
|
|
122
|
+
|
|
123
|
+
## How to fix it
|
|
124
|
+
|
|
125
|
+
| Symptom | Cause | Fix |
|
|
126
|
+
|---|---|---|
|
|
127
|
+
| Finished plan never reads COMPLETE | A checkbox is still unchecked somewhere in the tree — often in a nested atom file | `bash scripts/plan-status.sh` shows `checked/total`; grep the plan for `- [ ]` |
|
|
128
|
+
| A brand-new plan reads COMPLETE | Its template checkboxes were checked without doing the work, or the plan has no checkboxes and `status: done` was set by hand | Uncheck, or correct the frontmatter |
|
|
129
|
+
| `archive-plan.sh` refuses | The plan is genuinely incomplete | Finish it. `--force` exists for deliberate abandonment, not for impatience |
|
|
130
|
+
| "Already archived: … exists" | A plan with that slug was archived before | Rename or move the existing entry under `.planning/.archive/` first |
|
|
131
|
+
| Nudge never appears | No `.planning/` directory, or no plan is complete, or the hook is not registered | `npx persistent-planning status` reports hook registration |
|
|
132
|
+
| Archived plans show up in `git status` | `.planning/` is tracked in this repo and the ignore line was added after the fact | Ensure `.gitignore` has `.planning/.archive/`; `git rm -r --cached .planning/.archive` if already tracked |
|
|
133
|
+
|
|
134
|
+
## Design notes
|
|
135
|
+
|
|
136
|
+
**One implementation of the scan.** The hook, the slash command, and
|
|
137
|
+
`archive-plan.sh`'s completion check all shell out to `plan-status.sh`. A second
|
|
138
|
+
copy of the "is this done?" rule in JavaScript would be a second copy that could
|
|
139
|
+
disagree.
|
|
140
|
+
|
|
141
|
+
**The hook merges rather than appends.** `@theglitchking/claude-plugin-runtime`
|
|
142
|
+
owns the single `SessionStart` JSON response and exposes no hook for adding to it,
|
|
143
|
+
and emitting a second response line would be invalid. `hooks/session-start.js`
|
|
144
|
+
intercepts that one write and merges the nudge into the same payload, failing
|
|
145
|
+
open — if the payload is not the shape it expects, it is written through
|
|
146
|
+
untouched and the update check still works.
|
|
147
|
+
|
|
148
|
+
**Archive is gitignored on purpose.** A completed plan is a record of how *this
|
|
149
|
+
machine* got somewhere. Sharing it with every clone would grow the repository
|
|
150
|
+
with reasoning nobody reads. If a particular plan is worth keeping, promote its
|
|
151
|
+
findings into a real doc — which is what the mandatory documentation phase is for.
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
## Completion also gates on mandatory tasks (3.3.0+)
|
|
155
|
+
|
|
156
|
+
"Every checkbox checked" is necessary but no longer sufficient. A plan containing any
|
|
157
|
+
task with `mandatory: true` whose `status:` is not `done` (or `archived`) reads
|
|
158
|
+
`in progress` however the boxes add up, and `archive-plan.sh` refuses it through the
|
|
159
|
+
same pre-flight — there is still exactly one implementation of the rule.
|
|
160
|
+
|
|
161
|
+
Plans with no `mandatory:` frontmatter are unaffected.
|
|
162
|
+
|
|
163
|
+
Symptoms and fixes: [Plan never reads complete](../troubleshooting/plan-never-reads-complete.md).
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
## What counts, and what does not (3.3.1+)
|
|
167
|
+
|
|
168
|
+
- **Checkboxes** are body content and are counted anywhere *except* inside a fenced code
|
|
169
|
+
block. A quoted example is documentation, not work. An unterminated fence swallows the
|
|
170
|
+
rest of the file — the safe direction, since ambiguous content is not counted as
|
|
171
|
+
outstanding.
|
|
172
|
+
- **`status:` and `mandatory:`** are frontmatter fields and are read *only* from the
|
|
173
|
+
leading `---` block. They are never matched in prose, tables or fenced examples, which
|
|
174
|
+
is stricter than fence-stripping alone.
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
## What is tracked (3.4.0+)
|
|
178
|
+
|
|
179
|
+
Active plans are committed; only `.planning/.archive/` is gitignored. v1.0.0 ignored the
|
|
180
|
+
whole `.planning/` tree, which contradicted this procedure, `CLAUDE.md`, and the archive
|
|
181
|
+
rationale itself — and in lg mode, chosen because a team exists, it guaranteed no
|
|
182
|
+
teammate ever received the plans.
|
|
183
|
+
|
|
184
|
+
Repos carrying the old blanket line keep it: the init scripts warn once and never rewrite
|
|
185
|
+
a user's `.gitignore`. Replace `.planning/` with `.planning/.archive/` to start sharing.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Plugin update delivery — what actually runs, and when
|
|
3
|
+
tier: guide
|
|
4
|
+
domains:
|
|
5
|
+
- procedures
|
|
6
|
+
audience:
|
|
7
|
+
- developers
|
|
8
|
+
tags:
|
|
9
|
+
- migration
|
|
10
|
+
status: active
|
|
11
|
+
last_updated: '2026-09-04'
|
|
12
|
+
version: 1.0.0
|
|
13
|
+
purpose: What actually executes on each of the two distribution paths, why a marketplace
|
|
14
|
+
install never runs npm postinstall, and how to ship a fix that repairs existing installs.
|
|
15
|
+
estimated_read_time: 3 minutes
|
|
16
|
+
word_count: 539
|
|
17
|
+
last_validated: '2026-09-04'
|
|
18
|
+
backlinks: []
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Plugin update delivery — what actually runs, and when
|
|
22
|
+
|
|
23
|
+
This package ships down two paths. They execute **different code at different times**,
|
|
24
|
+
and a fix delivered through the wrong one reaches nobody. Read this before shipping any
|
|
25
|
+
change that has to repair or migrate an existing install.
|
|
26
|
+
|
|
27
|
+
## The two paths
|
|
28
|
+
|
|
29
|
+
| | npm package | Claude Code marketplace plugin |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| Installed at | `node_modules/@theglitchking/persistent-planning` | `~/.claude/plugins/cache/persistent-planning-marketplace/persistent-planning/<version>/` |
|
|
32
|
+
| Runs `postinstall`? | **yes** | **no** |
|
|
33
|
+
| `node_modules` present? | yes | **no — the plugin cache has none** |
|
|
34
|
+
| Runtime resolved from | local `node_modules` | shared `~/.claude/plugins/npm-cache/node_modules/` |
|
|
35
|
+
| Runs every session | SessionStart hook | SessionStart hook |
|
|
36
|
+
|
|
37
|
+
## The constraint
|
|
38
|
+
|
|
39
|
+
**A marketplace install never runs npm postinstall.**
|
|
40
|
+
|
|
41
|
+
So `runPostinstall()` — and therefore the skill linker, the reclaim, and the version
|
|
42
|
+
marker — never execute on a marketplace update. A repair wired only into postinstall
|
|
43
|
+
ships to npm consumers and silently misses every marketplace consumer.
|
|
44
|
+
|
|
45
|
+
That is not a corner case. In issue #10 the broken population *was* the marketplace
|
|
46
|
+
consumers, precisely because they were the ones postinstall could never reach.
|
|
47
|
+
|
|
48
|
+
`runPostinstall()` also returns `null` when `INIT_CWD` equals the package root
|
|
49
|
+
(dev-in-place), which is why this repo has no `.claude/skills/persistent-planning` of
|
|
50
|
+
its own.
|
|
51
|
+
|
|
52
|
+
## The rule
|
|
53
|
+
|
|
54
|
+
> **Anything that must reach an existing install goes through the SessionStart hook.**
|
|
55
|
+
> It is the only code that runs every session in both shapes.
|
|
56
|
+
|
|
57
|
+
`hooks/session-start.js` `autoRepair()` is the reference implementation:
|
|
58
|
+
|
|
59
|
+
- **Fast path first.** Two `lstat`s settle the common "nothing to do" case before any
|
|
60
|
+
work happens. Never make a healthy install pay.
|
|
61
|
+
- **Once per plugin version.** Stamped as `repairedSkillsForVersion` in
|
|
62
|
+
`.claude/persistent-planning.json`. Stamped *regardless of outcome*, so a repair that
|
|
63
|
+
cannot succeed does not retry every session; a later release moves the version and
|
|
64
|
+
gets one fresh attempt.
|
|
65
|
+
- **Policy-gated.** `auto` repairs, `nudge` warns only, `off` does nothing. A user who
|
|
66
|
+
turned updates off did not consent to filesystem mutation.
|
|
67
|
+
- **Spawned, not imported.** The migration runs in a child process with a timeout, so a
|
|
68
|
+
failure is contained.
|
|
69
|
+
- **Fails open.** Every path is wrapped. A broken migration must never cost someone
|
|
70
|
+
their session start.
|
|
71
|
+
- **One stdout write.** The runtime owns the single `SessionStart` JSON response and
|
|
72
|
+
exposes no append hook; a second response line is invalid. Merge into the existing
|
|
73
|
+
intercept.
|
|
74
|
+
|
|
75
|
+
## Release checklist addendum
|
|
76
|
+
|
|
77
|
+
The version appears in **three** places that must match — `package.json`,
|
|
78
|
+
`.claude-plugin/plugin.json`, `.claude-plugin/marketplace.json` (both `metadata.version`
|
|
79
|
+
and the plugin entry). See `CLAUDE.md`.
|
|
80
|
+
|
|
81
|
+
Two more things to verify for a migration release:
|
|
82
|
+
|
|
83
|
+
1. **The `files` array actually ships the new code.** v3.0.0 shipped broken because
|
|
84
|
+
`scripts/` and `templates/` were missing from it. Check with `npm pack --dry-run` and
|
|
85
|
+
grep the listing for the files you added.
|
|
86
|
+
2. **Test from a marketplace-shaped fixture** — no `node_modules`, no postinstall — not
|
|
87
|
+
from `npm install`. A test that passes under `npm install` proves nothing about the
|
|
88
|
+
population that is actually broken. `tests/run.sh` builds exactly this fixture.
|
|
89
|
+
|
|
90
|
+
If a fix depends on a new `@theglitchking/claude-plugin-runtime`, it needs a runtime
|
|
91
|
+
publish, a dependency-range bump here, and a coordinated rollout — marketplace consumers
|
|
92
|
+
resolve the runtime from a shared cache, not a vendored copy. Preferring a change that
|
|
93
|
+
keeps the runtime unchanged is usually worth real effort; the issue #10 reclaim is
|
|
94
|
+
deliberately ordered *before* the runtime's linker for that reason.
|
|
95
|
+
|
|
96
|
+
## Related
|
|
97
|
+
|
|
98
|
+
- [Skill linking and reclaim](../architecture/skill-linking-and-reclaim.md)
|
|
99
|
+
- [Stale skill directory](../troubleshooting/stale-skill-dir-drift.md)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Quickstart Documentation Index
|
|
3
|
+
tier: reference
|
|
4
|
+
domains: [quickstart]
|
|
5
|
+
status: active
|
|
6
|
+
last_updated: '2026-09-04'
|
|
7
|
+
version: '1.0.0'
|
|
8
|
+
purpose: Complete listing of quickstart documentation
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Quickstart Documentation
|
|
12
|
+
|
|
13
|
+
> Setup guides, dev workflow, onboarding
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
- **Total Documents:** 1
|
|
18
|
+
- **Domain:** `quickstart/`
|
|
19
|
+
- **Category:** features
|
|
20
|
+
- **Load Priority:** 9/10
|
|
21
|
+
|
|
22
|
+
## Documents
|
|
23
|
+
|
|
24
|
+
### Guides
|
|
25
|
+
|
|
26
|
+
| Document | Status | Updated | Words |
|
|
27
|
+
|----------|--------|---------|-------|
|
|
28
|
+
| [Examples: Persistent Planning in Action](examples.md) | active | 2026-08-31 | 136 |
|
|
29
|
+
|
|
30
|
+
## Keywords
|
|
31
|
+
|
|
32
|
+
This domain covers: quickstart, quick-start, getting-started, setup, install, installation, onboarding, developer, dev, workflow
|
|
33
|
+
|
|
34
|
+
## Related Domains
|
|
35
|
+
|
|
36
|
+
- [Workflows](../workflows/) - Process documentation, multi-step operations
|
|
37
|
+
- [Features](../features/) - Feature implementation guides, admin docs
|
|
38
|
+
- [Procedures](../procedures/) - Step-by-step operational procedures (SOP)
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
*Last updated: 2026-09-04*
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Quickstart Registry
|
|
3
|
+
tier: reference
|
|
4
|
+
domains: [quickstart]
|
|
5
|
+
status: active
|
|
6
|
+
last_updated: '2026-09-04'
|
|
7
|
+
version: '1.0.0'
|
|
8
|
+
purpose: Quick reference for quickstart documentation
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Quickstart Registry
|
|
12
|
+
|
|
13
|
+
> Quick reference for setup guides, dev workflow, onboarding.
|
|
14
|
+
|
|
15
|
+
## At a Glance
|
|
16
|
+
|
|
17
|
+
| Metric | Value |
|
|
18
|
+
|--------|-------|
|
|
19
|
+
| Documents | 1 |
|
|
20
|
+
| Category | features |
|
|
21
|
+
| Load Priority | 9/10 |
|
|
22
|
+
|
|
23
|
+
## Active Documents
|
|
24
|
+
|
|
25
|
+
- [Examples: Persistent Planning in Action](examples.md)
|
|
26
|
+
|
|
27
|
+
## Recently Updated
|
|
28
|
+
|
|
29
|
+
- [Examples: Persistent Planning in Action](examples.md) - 2026-08-31
|
|
30
|
+
|
|
31
|
+
## By Status
|
|
32
|
+
|
|
33
|
+
| Status | Count |
|
|
34
|
+
|--------|-------|
|
|
35
|
+
| active | 1 |
|
|
36
|
+
| draft | 0 |
|
|
37
|
+
| deprecated | 0 |
|
|
38
|
+
| archived | 0 |
|
|
39
|
+
|
|
40
|
+
## Keywords
|
|
41
|
+
|
|
42
|
+
`quickstart` `quick-start` `getting-started` `setup` `install` `installation` `onboarding` `developer` `dev` `workflow` `start` `begin` `intro` `introduction` `new-developer`
|
|
43
|
+
|
|
44
|
+
## See Also
|
|
45
|
+
|
|
46
|
+
- [Full Index](INDEX.md) - Complete document listing
|
|
47
|
+
- [Root Index](../INDEX.md) - All domains
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
*Last updated: 2026-09-04*
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Examples: Persistent Planning in Action'
|
|
3
|
+
tier: plan
|
|
4
|
+
domains:
|
|
5
|
+
- quickstart
|
|
6
|
+
audience:
|
|
7
|
+
- all
|
|
8
|
+
tags:
|
|
9
|
+
- authentication
|
|
10
|
+
status: active
|
|
11
|
+
last_updated: '2026-08-31'
|
|
12
|
+
version: 1.0.0
|
|
13
|
+
purpose: '**User Request:** "Research the benefits of morning exercise and write
|
|
14
|
+
a summary"'
|
|
15
|
+
estimated_read_time: 1 minute
|
|
16
|
+
word_count: 136
|
|
17
|
+
last_validated: '2026-08-31'
|
|
18
|
+
backlinks: []
|
|
19
|
+
---
|
|
20
|
+
|
|
1
21
|
# Examples: Persistent Planning in Action
|
|
2
22
|
|
|
3
23
|
## Example 1: Research Task
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Reference Documentation Index
|
|
3
|
+
tier: reference
|
|
4
|
+
domains: [reference]
|
|
5
|
+
status: active
|
|
6
|
+
last_updated: '2026-09-04'
|
|
7
|
+
version: '1.0.0'
|
|
8
|
+
purpose: Complete listing of reference documentation
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Reference Documentation
|
|
12
|
+
|
|
13
|
+
> Schema, frontmatter, and CLI reference material for the planning artifacts
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
- **Total Documents:** 3
|
|
18
|
+
- **Domain:** `reference/`
|
|
19
|
+
- **Category:** development
|
|
20
|
+
- **Load Priority:** 7/10
|
|
21
|
+
|
|
22
|
+
## Documents
|
|
23
|
+
|
|
24
|
+
### Standards
|
|
25
|
+
|
|
26
|
+
| Document | Status | Updated | Words |
|
|
27
|
+
|----------|--------|---------|-------|
|
|
28
|
+
| [workspace.json schema](workspace-json.md) | active | 2026-05-07 | 358 |
|
|
29
|
+
|
|
30
|
+
### References
|
|
31
|
+
|
|
32
|
+
| Document | Status | Updated | Words |
|
|
33
|
+
|----------|--------|---------|-------|
|
|
34
|
+
| [`mandatory:` task frontmatter](mandatory-frontmatter.md) | active | 2026-09-04 | 270 |
|
|
35
|
+
| [Skill version marker (`.version`)](skill-version-marker.md) | active | 2026-09-04 | 295 |
|
|
36
|
+
|
|
37
|
+
## Keywords
|
|
38
|
+
|
|
39
|
+
This domain covers: schema, frontmatter, workspace.json, field, enum, cli, flags, reference, contract
|
|
40
|
+
|
|
41
|
+
## Related Domains
|
|
42
|
+
|
|
43
|
+
- [Architecture](../architecture/) - System design, AI coach, project registry, patterns
|
|
44
|
+
- [Standards](../standards/) - Coding standards (backend, frontend, database, devops, security)
|
|
45
|
+
- [Testing](../testing/) - Test strategies, fixtures, patterns, integration/e2e
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
*Last updated: 2026-09-04*
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Reference Registry
|
|
3
|
+
tier: reference
|
|
4
|
+
domains: [reference]
|
|
5
|
+
status: active
|
|
6
|
+
last_updated: '2026-09-04'
|
|
7
|
+
version: '1.0.0'
|
|
8
|
+
purpose: Quick reference for reference documentation
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Reference Registry
|
|
12
|
+
|
|
13
|
+
> Quick reference for schema, frontmatter, and cli reference material for the planning artifacts.
|
|
14
|
+
|
|
15
|
+
## At a Glance
|
|
16
|
+
|
|
17
|
+
| Metric | Value |
|
|
18
|
+
|--------|-------|
|
|
19
|
+
| Documents | 3 |
|
|
20
|
+
| Category | development |
|
|
21
|
+
| Load Priority | 7/10 |
|
|
22
|
+
|
|
23
|
+
## Active Documents
|
|
24
|
+
|
|
25
|
+
- [`mandatory:` task frontmatter](mandatory-frontmatter.md)
|
|
26
|
+
- [Skill version marker (`.version`)](skill-version-marker.md)
|
|
27
|
+
- [workspace.json schema](workspace-json.md)
|
|
28
|
+
|
|
29
|
+
## Recently Updated
|
|
30
|
+
|
|
31
|
+
- [`mandatory:` task frontmatter](mandatory-frontmatter.md) - 2026-09-04
|
|
32
|
+
- [Skill version marker (`.version`)](skill-version-marker.md) - 2026-09-04
|
|
33
|
+
- [workspace.json schema](workspace-json.md) - 2026-05-07
|
|
34
|
+
|
|
35
|
+
## By Status
|
|
36
|
+
|
|
37
|
+
| Status | Count |
|
|
38
|
+
|--------|-------|
|
|
39
|
+
| active | 3 |
|
|
40
|
+
| draft | 0 |
|
|
41
|
+
| deprecated | 0 |
|
|
42
|
+
| archived | 0 |
|
|
43
|
+
|
|
44
|
+
## Keywords
|
|
45
|
+
|
|
46
|
+
`schema` `frontmatter` `workspace.json` `field` `enum` `cli` `flags` `reference` `contract`
|
|
47
|
+
|
|
48
|
+
## See Also
|
|
49
|
+
|
|
50
|
+
- [Full Index](INDEX.md) - Complete document listing
|
|
51
|
+
- [Root Index](../INDEX.md) - All domains
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
*Last updated: 2026-09-04*
|