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 +1 -1
- package/skills/do/SKILL.md +9 -0
- package/skills/migrate/SKILL.md +30 -4
- package/skills/to-issues/SKILL.md +28 -0
package/package.json
CHANGED
package/skills/do/SKILL.md
CHANGED
|
@@ -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
|
|
package/skills/migrate/SKILL.md
CHANGED
|
@@ -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
|
|
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:
|
|
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.
|