@pareto4/pp-core 1.7.0 → 1.8.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.
Files changed (48) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/bin/install.js +116 -0
  3. package/commands/pp-build-handoff.md +46 -0
  4. package/commands/pp-discovery-to-build.md +40 -0
  5. package/gemini-extension.json +1 -1
  6. package/package.json +2 -1
  7. package/pareto-skills/_shared/create-project-board.sh +195 -0
  8. package/pareto-skills/_shared/pp-claude-md-protocol.md +306 -0
  9. package/pareto-skills/_shared/sync-phase-status.sh +139 -0
  10. package/pareto-skills/pp-brand/SKILL.md +644 -0
  11. package/pareto-skills/pp-brand/assets/crew/ParetoAgent.inline.html +120 -0
  12. package/pareto-skills/pp-brand/assets/crew/ParetoAgent.tsx +239 -0
  13. package/pareto-skills/pp-brand/assets/crew/build.svg +11 -0
  14. package/pareto-skills/pp-brand/assets/crew/deploy.svg +11 -0
  15. package/pareto-skills/pp-brand/assets/crew/discovery.svg +11 -0
  16. package/pareto-skills/pp-brand/assets/crew/plan.svg +11 -0
  17. package/pareto-skills/pp-brand/assets/crew/run.svg +11 -0
  18. package/pareto-skills/pp-brand/assets/crew/validate.svg +11 -0
  19. package/pareto-skills/pp-brand/assets/pareto-brand-preview.html +547 -0
  20. package/pareto-skills/pp-obsidian-notes/SKILL.md +127 -0
  21. package/pareto-skills/pp-obsidian-notes/templates/CLAUDE.md +29 -0
  22. package/pareto-skills/pp-obsidian-notes/templates/client-context.md +116 -0
  23. package/pareto-skills/pp-obsidian-notes/templates/meeting-note.md +66 -0
  24. package/pareto-skills/pp-obsidian-notes/templates/pareto-context.md +102 -0
  25. package/pareto-skills/pp-obsidian-notes/templates/proposal.md +117 -0
  26. package/pareto-skills/pp-project-setup/SKILL.md +1364 -0
  27. package/pp-core/bin/lib/intel.cjs +1 -1
  28. package/pp-core/bin/lib/io.cjs +120 -0
  29. package/pp-core/bin/lib/profile-pipeline-command-router.cjs +1 -1
  30. package/pp-core/bin/lib/roadmap-parser.cjs +1 -1
  31. package/pp-core/bin/lib/runtime-artifact-conversion.cjs +2 -2
  32. package/pp-core/bin/lib/surface.cjs +1 -1
  33. package/pp-core/bin/lib/worktree-safety.cjs +2 -2
  34. package/pp-core/bin/pp-tools.cjs +23 -0
  35. package/pp-core/references/ui-brand.md +73 -11
  36. package/pp-core/templates/codebase/structure.md +5 -5
  37. package/pp-core/templates/spec.md +7 -7
  38. package/pp-core/workflows/add-backlog.md +1 -1
  39. package/pp-core/workflows/autonomous.md +4 -4
  40. package/pp-core/workflows/debug.md +1 -1
  41. package/pp-core/workflows/discovery-to-build.md +598 -0
  42. package/pp-core/workflows/execute-phase.md +9 -1
  43. package/pp-core/workflows/plan-phase.md +14 -12
  44. package/pp-core/workflows/pr-branch.md +5 -4
  45. package/pp-core/workflows/reapply-patches.md +1 -1
  46. package/pp-core/workflows/ship.md +1 -1
  47. package/pp-core/workflows/thread.md +1 -1
  48. package/pp-core/workflows/verify-work.md +6 -5
@@ -488,12 +488,13 @@ If user selects "Skip research": skip to step 6.
488
488
 
489
489
  **If `--auto` and `research_enabled` is false:** Skip research silently (preserves automated behavior).
490
490
 
491
- Display banner:
491
+ Run this Bash command to emit the branded Discovery stage banner (renders on stderr, auto-degrades on non-TTY — do NOT print an inline ASCII banner, that would double-print):
492
+ ```bash
493
+ pp_run banner discovery "RESEARCHING PHASE {X}"
492
494
  ```
493
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
494
- pp-core ► RESEARCHING PHASE {X}
495
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
496
495
 
496
+ Then announce the spawn:
497
+ ```
497
498
  ◆ Spawning researcher... (runs in a subagent — no output until it returns, ~1–5 min; expected, not a freeze)
498
499
  ```
499
500
 
@@ -501,7 +502,7 @@ Display banner:
501
502
 
502
503
  ```bash
503
504
  if pp_run query teams-status --active >/dev/null 2>&1; then
504
- echo "⚠️ CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS detected. pp-core's multi-agent orchestration is not validated under claude-code agent-teams and may stall (a subagent's completion can fail to route to the orchestrator). Recommend disabling agent-teams for GSD workflows. See https://github.com/open-gsd/pp-core/issues/1355" >&2
505
+ echo "⚠️ CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS detected. pp-core's multi-agent orchestration is not validated under claude-code agent-teams and may stall (a subagent's completion can fail to route to the orchestrator). Recommend disabling agent-teams for pp-core workflows. See https://github.com/open-gsd/pp-core/issues/1355" >&2
505
506
  fi
506
507
  ```
507
508
 
@@ -634,12 +635,12 @@ Read the `activeHooks` array directly from `PLAN_PRE_HOOKS_JSON` / `HOOKS_JSON`
634
635
  **Branch 1 — all plan:pre hooks inactive (`activeHooks` is empty or absent):** Skip to step 6.
635
636
 
636
637
  **Generic step hook dispatch contract:** For each active entry where `kind == "step"`:
637
- - If `ref.skill` is set, dispatch with `Skill(skill="gsd-${ref.skill}", args="${PHASE} --auto ${GSD_WS}")` when pipeline mode allows auto-chaining. Prepend `gsd-` to `ref.skill` — `ui-phase` → `pp-ui-phase`.
638
+ - If `ref.skill` is set, dispatch with `Skill(skill="pp-${ref.skill}", args="${PHASE} --auto ${GSD_WS}")` when pipeline mode allows auto-chaining. Prepend `pp-` to `ref.skill` — `ui-phase` → `pp-ui-phase`.
638
639
  - If `ref.agent` is set, dispatch with `Agent(prompt=filled_hook_fragment, subagent_type=ref.agent, model="{researcher_model}")`. Use the hook's `fragment.inline` as the prompt body and fill phase fields before spawning.
639
640
  - The `research` hook is handled by §5.1's research decision. The `pattern-mapper` hook is handled by §7.8 after `RESEARCH_PATH` is known. Future plan:pre agent hooks use the same `ref.agent` fragment contract.
640
641
 
641
642
  **AI integration capability:** If the active `ai-integration` step hook is present, `AI_SPEC_PATH` is empty, and the phase goal contains AI keywords (`agent`, `llm`, `rag`, `chatbot`, `embedding`, `langchain`, `llamaindex`, `crewai`, `langgraph`, `openai`, `anthropic`, `vector`, `eval`, `ai system`), then:
642
- - In pipeline / `--auto` mode, invoke the hook's `ref.skill` via `Skill(skill="gsd-${ref.skill}", args="${PHASE} --auto ${GSD_WS}")`.
643
+ - In pipeline / `--auto` mode, invoke the hook's `ref.skill` via `Skill(skill="pp-${ref.skill}", args="${PHASE} --auto ${GSD_WS}")`.
643
644
  - In manual mode, display the existing non-blocking `/pp:ai-integration-phase {N}` recommendation and let the user continue planning without AI-SPEC or stop to run the capability workflow first.
644
645
 
645
646
  Run the UI deterministic gate whenever **any** `plan:pre` UI hook is active — including the step-only case (`workflow.ui_safety_gate` off). (`check.query` = `"ui.plan-gate"`; router normalizes dots→hyphens.)
@@ -674,7 +675,7 @@ AUTO_CHAIN=$(pp_run query check auto-mode --pick auto_chain_active 2>/dev/null |
674
675
  **Branch 5 — `AUTO_CHAIN` is `true` (pipeline / `--auto`):** Fire each active UI **step** hook — runs independently of whether a gate is active (covers `{ui_phase:true,ui_safety_gate:false}`). For each entry in `activeHooks` (in array order) where `kind == "step"` and `ref.skill` is set:
675
676
 
676
677
  ```
677
- Skill(skill="gsd-${ref.skill}", args="${PHASE} --auto ${GSD_WS}")
678
+ Skill(skill="pp-${ref.skill}", args="${PHASE} --auto ${GSD_WS}")
678
679
  ```
679
680
 
680
681
  After all UI step hooks return, re-read:
@@ -827,12 +828,13 @@ Continue to step 8.
827
828
 
828
829
  ## 8. Spawn pp-planner Agent
829
830
 
830
- Display banner:
831
+ Run this Bash command to emit the branded Plan stage banner (renders on stderr, auto-degrades on non-TTY — do NOT print an inline ASCII banner, that would double-print):
832
+ ```bash
833
+ pp_run banner plan "PLANNING PHASE {X}"
831
834
  ```
832
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
833
- pp-core ► PLANNING PHASE {X}
834
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
835
835
 
836
+ Then announce the spawn:
837
+ ```
836
838
  ◆ Spawning planner... (runs in a subagent — no output until it returns, ~1–5 min; expected, not a freeze)
837
839
  ```
838
840
 
@@ -31,12 +31,13 @@ if [ "$AHEAD" = "0" ]; then
31
31
  fi
32
32
  ```
33
33
 
34
- Display:
34
+ Run this Bash command to emit the branded Deploy stage banner (renders on stderr, auto-degrades on non-TTY — do NOT print an inline ASCII banner, that would double-print):
35
+ ```bash
36
+ pp_run banner deploy "PR BRANCH"
35
37
  ```
36
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
37
- pp-core ► PR BRANCH
38
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
39
38
 
39
+ Then display the branch summary:
40
+ ```
40
41
  Branch: {CURRENT_BRANCH}
41
42
  Target: {TARGET}
42
43
  Commits: {AHEAD} ahead
@@ -1,6 +1,6 @@
1
1
  # Reapply Local Patches Workflow
2
2
 
3
- Invoked by `/pp:update --reapply` (`commands/gsd/update.md`).
3
+ Invoked by `/pp:update --reapply` (`commands/pp-update.md`).
4
4
 
5
5
  After a pp-core update wipes and reinstalls files, this workflow merges user's previously saved local modifications back into the new version. Uses three-way comparison (pristine baseline, user-modified backup, newly installed version) to reliably distinguish user customizations from version drift.
6
6
 
@@ -442,7 +442,7 @@ Read the `activeHooks` array directly from `SHIP_POST_HOOKS_JSON` in-context (do
442
442
  ```
443
443
 
444
444
  `Agent(subagent_type=ref.agent, prompt="Ship-time capability hook for phase ${PHASE_NUMBER}. Phase dir: ${PHASE_DIR}. Consume: ${consumed_files}. Follow your agent instructions.", model="{balanced_model}")`
445
- - If `ref.skill` is set, apply **prefix-aware resolution**: if `ref.skill` already begins with a runtime-resolvable stem (e.g. `pareto-`), dispatch it verbatim with no phase/workspace args — `Skill(skill=ref.skill)` — because the skill handles its own invocation (e.g. `pareto-sync-board` triggers bare). Otherwise, fall back to the existing stem behavior: `Skill(skill="gsd-${ref.skill}", args="${PHASE_NUMBER} --auto ${GSD_WS}")`. This prevents a `pareto-` skill from being incorrectly prefixed to a non-existent `gsd-pareto-*` name.
445
+ - If `ref.skill` is set, apply **prefix-aware resolution**: if `ref.skill` already begins with a runtime-resolvable stem (e.g. `pareto-`), dispatch it verbatim with no phase/workspace args — `Skill(skill=ref.skill)` — because the skill handles its own invocation (e.g. `pareto-sync-board` triggers bare). Otherwise, fall back to the existing stem behavior: `Skill(skill="pp-${ref.skill}", args="${PHASE_NUMBER} --auto ${GSD_WS}")`. This prevents a `pareto-` skill from being incorrectly prefixed to a non-existent `pp-pareto-*` name.
446
446
 
447
447
  Each dispatch is best-effort: if it errors, record a warning and continue — never re-raise (`onError: skip`).
448
448
  </step>
@@ -1,6 +1,6 @@
1
1
  # Thread Workflow
2
2
 
3
- Invoked by `/pp:thread` (`commands/gsd/thread.md`).
3
+ Invoked by `/pp:thread` (`commands/pp-thread.md`).
4
4
 
5
5
  Create, list, close, or resume persistent context threads for cross-session work.
6
6
 
@@ -467,7 +467,7 @@ Resolve active step hooks from `VERIFY_POST_HOOKS_JSON` where `kind == "step"` a
467
467
  If an active secure-phase step hook exists AND `SECURITY_FILE` is empty, dispatch the registry-provided skill stem:
468
468
 
469
469
  ```
470
- Skill(skill="gsd-${ref.skill}", args="{phase}")
470
+ Skill(skill="pp-${ref.skill}", args="{phase}")
471
471
  ```
472
472
 
473
473
  After the skill returns, refresh `SECURITY_FILE`:
@@ -619,12 +619,13 @@ On return:
619
619
  <step name="verify_gap_plans">
620
620
  **Verify fix plans with checker:**
621
621
 
622
- Display:
622
+ Run this Bash command to emit the branded Validate stage banner (renders on stderr, auto-degrades on non-TTY — do NOT print an inline ASCII banner, that would double-print):
623
+ ```bash
624
+ pp_run banner validate "VERIFYING"
623
625
  ```
624
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
625
- pp-core ► VERIFYING FIX PLANS
626
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
627
626
 
627
+ Then announce the spawn:
628
+ ```
628
629
  ◆ Spawning plan checker... (runs in a subagent — no output until it returns, ~1–5 min; expected, not a freeze)
629
630
  ```
630
631