pi-dev 0.1.1 → 0.1.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-dev",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "An autonomous engineering skill framework for the pi runtime — built on Matt Pocock's skills.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -40,6 +40,15 @@ The point: **one request → one finished outcome**, with as few user interrupti
40
40
  - Read docs/agents/{issue-tracker,triage-labels,domain}.md.
41
41
  - If GitHub is the tracker, run a 2-second readiness check (gh auth status, repo accessible). On fail, halt with fix commands.
42
42
  - If any preferences file's last-updated > 90 days, append a one-line refresh hint to the final summary.
43
+ - **Taboo lint (1-shot, non-blocking).** After prefs are merged, run a quick drift probe and surface findings in the final summary (do not halt the flow):
44
+ ```bash
45
+ # handoff paths that the migration forbade
46
+ find docs/handoff .scratch/flow .handoff -type f 2>/dev/null | head
47
+ # post-migration commits that look like handoff writes
48
+ marker_date=$(grep -oE 'migrated: [0-9-]+' docs/agents/preferences.md 2>/dev/null | awk '{print $2}')
49
+ [ -n "$marker_date" ] && git log --since="$marker_date" --oneline --grep='handoff\|SESSION_' | head
50
+ ```
51
+ Any hit → add a "taboo drift" line to the final summary recommending `/migrate` re-run. Findings are advisory at this stage; `/migrate` owns the cleanup.
43
52
  - If the user's request hints at continuation ("이어서", "지난번", "where were we", "다시 시작"), invoke `/where` (optional). Otherwise skip it — the migration-enforced state-of-work channels (code / issues / prefs) are usually enough.
44
53
  ```
45
54
 
@@ -180,7 +180,14 @@ Wait for user OK. Show exact text being preserved or translated if user asks.
180
180
 
181
181
  In order:
182
182
 
183
- 1. **Backup**: `mv` everything in ARCHIVE to `.archive/<date>-pre-migration/`. Add `.archive/` to `.gitignore` if not present.
183
+ 1. **Backup + handoff lockout**: `mv` everything in ARCHIVE to `.archive/$(date -u +%Y-%m-%d)-pre-migration/`. Add `.archive/` to `.gitignore` if not present. **Also append handoff-path lockouts** to `.gitignore` so they cannot silently come back:
184
+ ```
185
+ # post-migration: handoff systems are forbidden (see docs/agents/preferences.md taboos)
186
+ docs/handoff/
187
+ .scratch/flow/
188
+ .handoff/
189
+ ```
190
+ If the repo already gitignores these for a different reason, leave them — the rule still holds.
184
191
  2. **Setup docs**: invoke `/setup` if any of `docs/agents/{issue-tracker,triage-labels,domain}.md` missing.
185
192
  3. **Rewrite AGENTS.md** with the canonical skeleton:
186
193
  ```markdown
@@ -208,10 +215,12 @@ In order:
208
215
  ```
209
216
  4. **Sub-AGENTS.md**: if scoped `<subdir>/AGENTS.md` exists, leave it but strip duplicated process docs; preserve only hard rules specific to that subtree.
210
217
  5. **Onboard preferences**: invoke `/taste` in onboarding mode.
211
- 6. **Mark migrated**: append to `docs/agents/preferences.md`:
212
- ```
213
- <!-- migrated: <ISO-date> by `/migrate` -->
218
+ 6. **Mark migrated**: append to `docs/agents/preferences.md` using the real current ISO date (shell-resolved, never hand-typed):
219
+ ```bash
220
+ printf '\n<!-- migrated: %s by `/migrate` -->\n' "$(date -u +%Y-%m-%d)" \
221
+ >> docs/agents/preferences.md
214
222
  ```
223
+ The marker literal must read `<!-- migrated: YYYY-MM-DD by \`/migrate\` -->`. Do not paste a future or rounded date — `/do`'s 90-day staleness check relies on this being accurate.
215
224
  7. **Print summary**: counts of preserved / translated / archived / written, plus any FYI items needing manual review.
216
225
 
217
226
  ### 6. Idempotency
@@ -220,6 +229,23 @@ This skill is safe to re-run. On second run:
220
229
  - If marker present and no drift detected → print "already migrated, no changes" and exit.
221
230
  - If drift detected (new handoff files appeared, AGENTS.md got a generic process section bolted on, etc.) → present a diff for those drifts only.
222
231
 
232
+ **Drift probes** (run all on re-entry, regardless of marker):
233
+
234
+ ```bash
235
+ # 1. handoff paths resurrected since migration
236
+ find docs/handoff .scratch/flow .handoff -type f 2>/dev/null | head
237
+
238
+ # 2. handoff-style commits after the migration marker
239
+ marker_date=$(grep -oE 'migrated: [0-9-]+' docs/agents/preferences.md | awk '{print $2}')
240
+ [ -n "$marker_date" ] && git log --since="$marker_date" --oneline --grep='handoff\|SESSION_' || true
241
+
242
+ # 3. taboo labels still alive on the tracker (GitHub example)
243
+ gh label list --json name --jq '.[].name' 2>/dev/null \
244
+ | grep -E '^(retro-action-item|process-audit|handoff)$' || true
245
+ ```
246
+
247
+ Any non-empty output → surface as drift in the plan and offer to clean up (delete files, rename commits is N/A, archive labels via `gh label delete` after confirming zero usage). Do not silently ignore.
248
+
223
249
  ## When migration cannot proceed
224
250
 
225
251
  - User refuses to delete a competing rule file (CLAUDE.md vs AGENTS.md both alive) → migration stops, `/do` stays blocked. The decision must be made.
@@ -55,7 +55,11 @@ For each approved slice, publish a new issue to the issue tracker. Use the issue
55
55
 
56
56
  Publish issues in dependency order (blockers first) so you can reference real issue identifiers in the "Blocked by" field.
57
57
 
58
+ **Every issue body MUST start with the AI disclaimer** (same wording as `/triage`). This is a hard requirement — no exceptions, including auto-generated slices. After writing the body, grep your own draft for the disclaimer string; if missing, do not publish.
59
+
58
60
  <issue-template>
61
+ > *This was generated by AI during triage.*
62
+
59
63
  ## Parent
60
64
 
61
65
  A reference to the parent issue on the issue tracker (if the source was an existing issue, otherwise omit this section).
@@ -78,4 +82,28 @@ Or "None - can start immediately" if no blockers.
78
82
 
79
83
  </issue-template>
80
84
 
85
+ **Publishing pattern (GitHub).** Use `--body-file -` with a heredoc, never inline `--body "..."`, so the disclaimer and markdown structure survive shell quoting verbatim:
86
+
87
+ ```bash
88
+ gh issue create \
89
+ --title "[Slice N] <title>" \
90
+ --label needs-triage \
91
+ --body-file - <<'EOF'
92
+ > *This was generated by AI during triage.*
93
+
94
+ ## Parent
95
+ #<parent>
96
+
97
+ ## What to build
98
+ ...
99
+ EOF
100
+ ```
101
+
102
+ After creation, immediately verify the disclaimer landed:
103
+
104
+ ```bash
105
+ gh issue view <n> --json body --jq '.body' | head -1 | grep -q 'generated by AI' \
106
+ || echo "FAIL: disclaimer missing on #<n>"
107
+ ```
108
+
81
109
  Do NOT close or modify any parent issue.