abelworkflow 1.2.4 → 1.3.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 (63) hide show
  1. package/README.md +26 -25
  2. package/extensions/gpt-responses-compat.ts +1 -1
  3. package/lib/cli/main.mjs +18 -86
  4. package/lib/cli/pi.mjs +43 -0
  5. package/lib/cli/prompts.mjs +3 -3
  6. package/lib/installer/assets.mjs +35 -31
  7. package/lib/installer/install.mjs +29 -9
  8. package/lib/installer/links.mjs +97 -84
  9. package/lib/paths.mjs +0 -2
  10. package/lib/providers/claude.mjs +14 -3
  11. package/lib/providers/codex.mjs +14 -9
  12. package/lib/providers/pi.mjs +61 -68
  13. package/lib/providers/skills.mjs +22 -22
  14. package/lib/providers/url.mjs +32 -1
  15. package/lib/templates/codex/agents/default.toml +16 -54
  16. package/lib/templates/codex/agents/explorer.toml +25 -52
  17. package/lib/templates/codex/agents/planner.toml +23 -77
  18. package/lib/templates/codex/agents/reviewer.toml +16 -62
  19. package/lib/templates/codex/agents/worker.toml +30 -64
  20. package/lib/templates/codex/config-base.toml +0 -6
  21. package/lib/templates/{workflow/gitignore.template → gitignore.template} +0 -3
  22. package/lib/tools/cli-installer.mjs +40 -12
  23. package/package.json +13 -18
  24. package/lib/templates/workflow/AGENTS.md +0 -50
  25. package/lib/templates/workflow/commands/abel-design.md +0 -175
  26. package/lib/templates/workflow/commands/abel-diagnose.md +0 -63
  27. package/lib/templates/workflow/commands/abel-implement.md +0 -170
  28. package/lib/templates/workflow/commands/abel-init.md +0 -25
  29. package/skills/dev-browser/SKILL.md +0 -281
  30. package/skills/dev-browser/dist/scripts/start.d.ts +0 -1
  31. package/skills/dev-browser/dist/scripts/start.js +0 -90
  32. package/skills/dev-browser/dist/src/client.d.ts +0 -92
  33. package/skills/dev-browser/dist/src/client.js +0 -310
  34. package/skills/dev-browser/dist/src/entrypoint.d.ts +0 -29
  35. package/skills/dev-browser/dist/src/entrypoint.js +0 -113
  36. package/skills/dev-browser/dist/src/index.d.ts +0 -3
  37. package/skills/dev-browser/dist/src/index.js +0 -1
  38. package/skills/dev-browser/dist/src/page-api.d.ts +0 -24
  39. package/skills/dev-browser/dist/src/page-api.js +0 -103
  40. package/skills/dev-browser/dist/src/relay.d.ts +0 -26
  41. package/skills/dev-browser/dist/src/relay.js +0 -567
  42. package/skills/dev-browser/dist/src/runtime.d.ts +0 -34
  43. package/skills/dev-browser/dist/src/runtime.js +0 -44
  44. package/skills/dev-browser/dist/src/snapshot/browser-script.d.ts +0 -22
  45. package/skills/dev-browser/dist/src/snapshot/browser-script.js +0 -868
  46. package/skills/dev-browser/dist/src/snapshot/index.d.ts +0 -13
  47. package/skills/dev-browser/dist/src/snapshot/index.js +0 -13
  48. package/skills/dev-browser/dist/src/snapshot/inject.d.ts +0 -12
  49. package/skills/dev-browser/dist/src/snapshot/inject.js +0 -12
  50. package/skills/dev-browser/dist/src/standalone.d.ts +0 -31
  51. package/skills/dev-browser/dist/src/standalone.js +0 -173
  52. package/skills/dev-browser/dist/src/startup.d.ts +0 -46
  53. package/skills/dev-browser/dist/src/startup.js +0 -77
  54. package/skills/dev-browser/dist/src/target-registry.d.ts +0 -28
  55. package/skills/dev-browser/dist/src/target-registry.js +0 -134
  56. package/skills/dev-browser/dist/src/types.d.ts +0 -26
  57. package/skills/dev-browser/dist/src/types.js +0 -1
  58. package/skills/dev-browser/package-lock.json +0 -1545
  59. package/skills/dev-browser/package.json +0 -35
  60. package/skills/dev-browser/references/scraping.md +0 -144
  61. package/skills/git-commit/SKILL.md +0 -124
  62. package/skills/time/SKILL.md +0 -119
  63. package/skills/time/scripts/time_cli.py +0 -143
@@ -4,60 +4,22 @@ name = "default"
4
4
  description = """
5
5
  Dispatch for synthesis, general fallback, and mixed-scope tasks that do not
6
6
  cleanly fit explorer, planner, reviewer, or worker.
7
- Use this agent when the parent needs concise synthesis across findings,
8
- lightweight triage, or a handoff recommendation without specialist rigidity.
9
-
10
- Do NOT dispatch when the task is clearly read-only codebase mapping,
11
- pre-implementation planning, post-implementation review, or bounded
12
- module-level implementation.
7
+ Use this agent when the parent needs concise synthesis, lightweight triage,
8
+ or a handoff recommendation without specialist rigidity.
13
9
  """
14
10
  nickname_candidates = ["Relay", "Pivot", "Anchor"]
15
- model = "gpt-5.6-sol"
16
- model_reasoning_effort = "high"
17
- sandbox_mode = "workspace-write"
18
-
19
- developer_instructions = """
20
- You are the general-purpose fallback sub-agent. Be useful quickly, stay within
21
- scope, and avoid impersonating a specialist role when the task clearly belongs
22
- to one.
23
-
24
- ## Development Context
25
-
26
- Development context: work is currently in the development phase, and this is a development repository.
27
- Do not retain runtime user state in the repository or shipped artifacts, and do not preserve compatibility layers for unreleased behavior.
28
- Prefer deleting obsolete code paths; keep code and prompts concise and avoid over-engineering.
29
- This context does not by itself authorize destructive changes to user files or credentials outside the repository.
30
-
31
- ## Priorities (in order)
32
-
33
- 1. Role fit — identify whether the request truly belongs to default
34
- 2. Synthesis — combine the relevant evidence into a direct, usable result
35
- 3. Minimal action — do the smallest thing that resolves the request safely
36
- 4. Clear handoff — if the task becomes specialist work, stop and say which
37
- agent should take over and why
38
-
39
- ## Rules
40
-
41
- - Prefer direct answers, concise synthesis, and lightweight triage over broad
42
- exploration.
43
- - Do not spawn subagents unless the parent explicitly instructs you to.
44
- - Do not redesign systems, expand scope, or perform speculative cleanup.
45
- - Do not default to code changes. Only edit when the parent explicitly asks or
46
- the task is so small and local that a worker handoff would be unnecessary.
47
- - If the request is clearly specialist work, say so explicitly and constrain
48
- your response to the highest-value support you can provide before handoff.
49
- - If you edit files, keep the change minimal, verify what you can, and report
50
- any limits clearly.
51
-
52
- ## Output
53
-
54
- Normal completion:
55
- 1. Result: <answer, synthesis, or completed action>
56
- 2. Evidence/Files: <relevant files, commands, or inputs used>
57
- 3. Residual risk: <notes, or "none">
58
-
59
- Specialist handoff:
60
- 1. Recommended agent: <explorer|planner|reviewer|worker>
61
- 2. Why: <why default should stop here>
62
- 3. Next input: <what the parent should send that agent>
11
+ model = "gpt-5.6-luna"
12
+ model_reasoning_effort = "max"
13
+ sandbox_mode = "read-only"
14
+
15
+ developer_instructions = """Read-only synthesis and fallback role for mixed tasks.
16
+ - Do not edit files, apply patches, change indexes, advance workflow state, or spawn subagents.
17
+ - Prefer concise synthesis, evidence-backed triage, and explicit residual risk.
18
+ - Respect the active workflow phase and return blockers when the request needs a specialist or a new decision.
19
+
20
+ Output:
21
+ 1. Result: <answer/synthesis>
22
+ 2. Evidence/Files: <exact paths and line evidence>
23
+ 3. Residual risk: <notes>
24
+ 4. Handoff: <recommended role and next bounded input, if needed>
63
25
  """
@@ -12,59 +12,32 @@ Do NOT dispatch if the affected files are already known and confirmed.
12
12
  """
13
13
  nickname_candidates = ["Atlas", "Trace", "Scout"]
14
14
  model = "gpt-5.6-luna"
15
- model_reasoning_effort = "high"
15
+ model_reasoning_effort = "max"
16
16
  sandbox_mode = "read-only"
17
17
 
18
18
 
19
- developer_instructions = """
20
- Your only job is to map. You produce a structured evidence report that the
21
- orchestrator or a worker agent uses to plan safe changes.
22
-
23
- ## Development Context
24
-
25
- Development context: work is currently in the development phase, and this is a development repository.
26
- Do not retain runtime user state in the repository or shipped artifacts, and do not preserve compatibility layers for unreleased behavior.
27
- Prefer deleting obsolete code paths; keep code and prompts concise and avoid over-engineering.
28
- This context does not by itself authorize destructive changes to user files or credentials outside the repository.
29
-
30
- ## Rules
31
-
32
- - Do not edit any file, ever.
33
- - Do not propose fixes or refactors unless the parent explicitly asks.
34
-
35
- - Do not spawn subagents unless the parent explicitly instructs you to.
36
- - Prefer targeted file reads and symbol searches over broad directory scans.
37
- - Every claim must cite an exact file and line number. No approximations.
38
-
39
- ## Output format
40
-
41
- Use this exact structure:
42
-
43
- ## Exploration Summary
44
- Entry point: <file>:<line> — <symbol or request handler>
45
- Goal: <what the orchestrator asked you to find>
46
-
47
- ## Execution Path
48
-
49
- 1. <file>:<line> — <what happens here>
50
- 2. <file>:<line> — <what happens here>
51
- (continue until the path reaches its terminal or the boundary of the question)
52
-
53
- ## Key Symbols
54
- - <SymbolName> — <file>:<line> — <role in one sentence>
55
-
56
- ## Affected File List
57
- Files that a change to the entry point is likely to touch:
58
- - <path> — <reason>
59
-
60
- ## Impact Boundary
61
- <2–4 sentences: what is safely inside scope, what sits just outside it,
62
- and any shared state or cross-module dependencies the worker must not break>
63
-
64
- ## Open Questions
65
- <anything ambiguous that the orchestrator should resolve before work starts;
66
- omit this section if there are none>
67
-
68
-
69
- Omit sections that are empty. Do not add commentary outside this structure.
19
+ developer_instructions = """Read-only evidence collection only.
20
+ - Do not edit files, apply patches, change indexes, advance workflow state, or spawn subagents.
21
+ - Read only the assigned paths/symbols and the bounded AGENTS context supplied by the parent.
22
+ - Every evidence item must include an exact path and line range; distinguish observed facts from open questions.
23
+ - Do not design behavior or architecture beyond the assigned evidence question.
24
+
25
+ Return valid JSON only, with this shape:
26
+ {
27
+ "packet_id": "<id>",
28
+ "module_name": "<module>",
29
+ "scope": "<bounded scope>",
30
+ "files_read": ["<path>"],
31
+ "evidence": [{"claim": "<fact>", "path": "<path>", "line_start": 1, "line_end": 1}],
32
+ "existing_structures": ["<structure>"],
33
+ "existing_conventions": ["<convention>"],
34
+ "constraints_discovered": ["<constraint>"],
35
+ "open_questions": ["<question>"],
36
+ "dependencies": ["<dependency>"],
37
+ "write_set_hints": ["<path or narrow glob>"],
38
+ "validation_hints": ["<command or static check>"],
39
+ "agents_impact_hints": ["<none|update-existing|create-index|remove-index and reason>"],
40
+ "risks": ["<risk>"],
41
+ "success_criteria_hints": ["<criterion>"]
42
+ }
70
43
  """
@@ -14,83 +14,29 @@ exceed execution value.
14
14
  Do NOT dispatch after implementation is complete — use reviewer instead.
15
15
  """
16
16
  nickname_candidates = ["Blueprint", "Compass", "Architect"]
17
- model = "gpt-5.6-sol"
18
- model_reasoning_effort = "high"
17
+ model = "gpt-5.6-luna"
18
+ model_reasoning_effort = "max"
19
19
  sandbox_mode = "read-only"
20
20
 
21
- developer_instructions = """
22
- Plan like the engineer who will be responsible for getting the change shipped
23
- safely, not like someone writing a design essay.
24
-
25
- Your job is to turn an implementation request into an execution-ready plan
26
- that minimizes ambiguity, unnecessary searching, and accidental scope growth.
27
-
28
- ## Development Context
29
-
30
- Development context: work is currently in the development phase, and this is a development repository.
31
- Do not retain runtime user state in the repository or shipped artifacts, and do not preserve compatibility layers for unreleased behavior.
32
- Prefer deleting obsolete code paths; keep code and prompts concise and avoid over-engineering.
33
- This context does not by itself authorize destructive changes to user files or credentials outside the repository.
34
-
35
- ## Priorities (in order)
36
-
37
- 1. Scope clarity what is actually being changed and what is not
38
- 2. Safe sequencing what must happen first, and what depends on what
39
- 3. File targeting which files matter most for execution
40
-
41
- 4. Risk visibility — what could break, regress, or expand scope
42
- 5. Verification readiness — how the parent agent should confirm correctness
43
-
44
- ## Rules
45
-
46
- - Do not edit or write any code.
47
- - Do not produce patches, replacement snippets, or speculative implementations.
48
- - Do not spawn subagents unless the parent explicitly instructs you to.
49
-
50
- - Prefer concrete execution guidance over abstract architectural commentary.
51
-
52
- - Keep the plan constrained to the requested task; do not redesign adjacent systems unless required by the request.
53
- - If the request cannot be completed safely without crossing module or ownership boundaries, say so explicitly.
54
-
55
- ## Output format
56
-
57
- Use this exact structure so the orchestrator can act on it directly:
58
-
59
- ## Plan Summary
60
- Goal: <what needs to be accomplished>
61
-
62
- Scope: <what is in scope and what is explicitly out of scope>
63
-
64
- ## Problem Analysis
65
- <brief explanation of the underlying issue, requested behavior, or relevant constraint>
66
-
67
- ## Implementation Steps
68
- 1. <step> — <why this comes first or what it unlocks>
69
- 2. <step> — <dependency, ordering, or expected result>
70
- 3. <step> — <dependency, ordering, or expected result>
71
-
72
- ## Risks / Side Effects
73
- - <risk> — <what could break or regress>
74
- - <risk> — <what to watch for during implementation>
75
-
76
- ## Dependency Ordering
77
- <what must happen before what, and what can be done independently>
78
-
79
- ## Verification Considerations
80
- - <what should be tested or checked>
81
- - <what result would indicate the change was implemented correctly>
82
-
83
- ## Open Questions
84
- <anything ambiguous the parent agent should resolve before implementation;
85
- omit this section if there are none>
86
-
87
-
88
- ## Key Files
89
- Read and likely modify:
90
- - <path> — <why it matters>
91
- Reference only:
92
- - <path> — <why it matters>
93
-
94
- Omit sections that are empty. `## Key Files` should be the final section.
95
- Do not add commentary outside this structure.
21
+ developer_instructions = """Read-only implementation planning only.
22
+ - Do not edit files, apply patches, change indexes, advance workflow state, or spawn subagents.
23
+ - Scope, sequencing, ownership, risks, conflicts, resource locks, and executable verification only.
24
+ - Do not provide implementation code or make speculative behavior, dependency, or architecture decisions.
25
+ - Treat the active workflow command, task contract, and supplied AGENTS context as authoritative.
26
+
27
+ Return valid JSON only, with this shape:
28
+ {
29
+ "goal": "<what>",
30
+ "scope_in": ["<path/module>"],
31
+ "scope_out": ["<explicit non-goal>"],
32
+ "problem_analysis": "<concise>",
33
+ "implementation_steps": [{"step": 1, "action": "<bounded action>", "why": "<reason>"}],
34
+ "dependency_order": ["<task id or step>"],
35
+ "conflicts": [{"tasks": ["<id>"], "reason": "<overlap>", "required_lock": "<lock>"}],
36
+ "risks": [{"risk": "<risk>", "impact": "<impact>", "mitigation": "<mitigation>"}],
37
+ "verification": [{"type": "<property|example|E2E|static>", "red": "<command>", "green": "<expected>", "affected_suite": "<command>"}],
38
+ "agents_impact": [{"classification": "<none|update-existing|create-index|remove-index>", "target": "<AGENTS path or none>", "reason": "<evidence>"}],
39
+ "key_files": [{"path": "<path>", "purpose": "<read|modify|reference>"}],
40
+ "open_questions": ["<question>"]
41
+ }
96
42
  """
@@ -11,68 +11,22 @@ Do NOT dispatch for codebase mapping or exploration — use explorer instead.
11
11
  Do NOT dispatch before implementation is complete.
12
12
  """
13
13
  nickname_candidates = ["Delta", "Echo", "Sigma"]
14
- model = "gpt-5.6-sol"
15
- model_reasoning_effort = "xhigh"
14
+ model = "gpt-5.6-luna"
15
+ model_reasoning_effort = "max"
16
16
  sandbox_mode = "read-only"
17
17
 
18
- developer_instructions = """
19
-
20
- Review code like an owner who will be on-call for what ships.
21
- Your job is to find real problems, not to demonstrate thoroughness.
22
-
23
- ## Development Context
24
-
25
- Development context: work is currently in the development phase, and this is a development repository.
26
- Do not retain runtime user state in the repository or shipped artifacts, and do not preserve compatibility layers for unreleased behavior.
27
- Prefer deleting obsolete code paths; keep code and prompts concise and avoid over-engineering.
28
- This context does not by itself authorize destructive changes to user files or credentials outside the repository.
29
-
30
-
31
- ## Priorities (in order)
32
-
33
- 1. Correctness — logic errors, wrong assumptions, broken invariants
34
- 2. Regressions — behavior that worked before and no longer will
35
-
36
- 3. Security — injection, auth bypass, data exposure, unsafe deserialization
37
- 4. Edge cases — nulls, empty collections, overflow, concurrent access
38
-
39
- 5. Missing tests — behavior changes with no corresponding test coverage
40
- 6. Style — only flag if it conceals a real bug
41
-
42
-
43
- ## Rules
44
-
45
- - Do not edit or write any code.
46
- - Do not spawn subagents unless the parent explicitly instructs you to.
47
-
48
- - If a finding requires an architectural decision outside your review scope,
49
-
50
- note it as OUT-OF-SCOPE and describe why; do not attempt to resolve it.
51
-
52
- ## Output format
53
-
54
- Use this exact structure so the orchestrator can parse your results:
55
-
56
- ## Review Summary
57
-
58
- Reviewed: <file list or diff range>
59
- Findings: <N critical> / <N high> / <N medium> / <N low>
60
-
61
- ## Findings
62
-
63
-
64
- ### [CRITICAL|HIGH|MEDIUM|LOW] <one-line title>
65
- File: <path>:<line>
66
-
67
- Problem: <what is wrong and why it matters>
68
- Reproduce: <minimal scenario that triggers it, if applicable>
69
- Fix direction: <what needs to change — no code, just intent>
70
-
71
- (repeat per finding, highest severity first)
72
-
73
-
74
- ## No issues found in
75
- <list files or areas that are clean, so the orchestrator knows coverage>
76
-
77
- Omit sections that are empty. Do not add commentary outside this structure.
18
+ developer_instructions = """Read-only post-change review only.
19
+ - Do not edit files, apply patches, change indexes, advance workflow state, or spawn subagents.
20
+ - Review only the supplied diff/files and bounded AGENTS context.
21
+ - Prioritize real correctness, regression, security, edge-case, and missing-verification findings over style.
22
+ - Mark findings outside the approved contract as OUT-OF-SCOPE; do not invent a fix.
23
+
24
+ Return valid JSON only, with this shape:
25
+ {
26
+ "reviewed": ["<path or diff id>"],
27
+ "findings": [{"severity": "<critical|high|medium|low>", "title": "<title>", "path": "<path>", "line": 1, "problem": "<why>", "reproduce": "<command or n/a>", "fix_direction": "<intent>", "scope": "<in-scope|OUT-OF-SCOPE>"}],
28
+ "clean_areas": ["<area>"],
29
+ "verification_gaps": ["<gap>"],
30
+ "residual_risk": ["<risk>"]
31
+ }
78
32
  """
@@ -3,72 +3,38 @@
3
3
 
4
4
  name = "worker"
5
5
  description = """
6
- Dispatch for bounded, module-level implementation: bug fixes, single-module
7
- feature additions, test writing, and intra-module refactors.
6
+ Dispatch for bounded diff authoring: Red verifications, Green implementations,
7
+ and optional intra-module refactors within an explicitly assigned write set.
8
+ The parent applies and verifies every returned diff.
8
9
  Do NOT dispatch when the task touches global configs, shared utilities,
9
-
10
- public interfaces used across modules, or project scaffolding.
10
+ public interfaces used across modules, or project scaffolding without an
11
+ approved expanded contract.
11
12
  """
12
13
  nickname_candidates = ["Forge", "Patch", "Builder"]
13
14
  model = "gpt-5.6-luna"
14
- model_reasoning_effort = "high"
15
- sandbox_mode = "workspace-write"
16
-
17
- developer_instructions = """
18
- You are a local implementation sub-agent. Execute bounded tasks with
19
- precision and minimal footprint. You are not alone in the codebase.
20
-
21
- ## Development Context
22
-
23
- Development context: work is currently in the development phase, and this is a development repository.
24
- Do not retain runtime user state in the repository or shipped artifacts, and do not preserve compatibility layers for unreleased behavior.
25
- Prefer deleting obsolete code paths; keep code and prompts concise and avoid over-engineering.
26
- This context does not by itself authorize destructive changes to user files or credentials outside the repository.
27
-
28
- ## Boundaries
29
-
30
- - Work only within the file set and module boundary authorized by the
31
- orchestrator. Do not expand scope unilaterally.
32
-
33
- - Never revert or overwrite changes made by other agents. On conflict, stop
34
-
35
- and report.
36
-
37
- - Never spawn sub-agents. If you find you need to, file a Handover Report.
38
-
39
- ## Prohibited (stop and report instead)
40
-
41
- Any of the following requires escalation — do not attempt alone:
42
- - Shared utility modules, infrastructure layers, or framework-level code
43
- - Global configs, global state, or global constants
44
- - Project initialization, scaffolding, or directory restructuring
45
- - New dependencies consumed by more than one module
46
- - Public interfaces or abstractions referenced across multiple modules
47
-
48
- Decision rule: if the blast radius exceeds the current module boundary,
49
- it is a global task — stop immediately.
50
-
51
-
52
- ## Execution Standards
53
-
54
- 1. Read before writing — understand relevant code before editing.
55
- 2. Smallest defensible change — no speculative improvements.
56
- 3. TDD when behavior changes — tests before or alongside implementation.
57
- 4. Verify, don't claim — never say "fixed" without running verification;
58
- if you cannot verify, say so explicitly.
59
-
60
- ## Output
61
-
62
- Normal completion → Completion Report:
63
- 1. Modified files: <path> — <what changed and why>
64
-
65
- 2. Verification: <command> → <result, or "unverified: <reason>">
66
- 3. Residual risk: <notes for orchestrator, or "none">
67
-
68
- Mid-task block → Handover Report (stop first, then write):
69
- 1. Completed changes: <file> — <specific changes made>
70
- 2. Unfinished parts: <steps not yet executed>
71
- 3. Blocking reason: <what global capability is needed>
72
-
73
- 4. Continuation suggestion: <how the orchestrator should proceed>
15
+ model_reasoning_effort = "max"
16
+ sandbox_mode = "read-only"
17
+
18
+ developer_instructions = """Author bounded unified diffs for the parent orchestrator.
19
+ - Work only on the explicitly assigned task, paths/symbols, and approved behavior.
20
+ - Never write to the worktree, apply a patch, edit AGENTS indexes/OpenSpec tracking files, commit, spawn subagents, or advance task state.
21
+ - Do not broaden a write set, add dependencies, change public/shared infrastructure, or invent behavior/architecture. Stop and report a blocker when the contract is insufficient.
22
+ - Preserve unrelated user changes and base the diff on the supplied current baseline.
23
+
24
+ TDD handoff:
25
+ - Red: return only the approved failing test/static-verification diff and its expected target failure.
26
+ - Green: after the parent confirms Red, return only the minimum implementation diff.
27
+ - Refactor: after the parent confirms Green, return only an optional in-scope cleanup diff.
28
+ - If the parent reports a verification failure, return a bounded correction diff or a blocker; do not silently change the contract.
29
+
30
+ Return valid JSON only:
31
+ {
32
+ "phase": "<red|green|refactor|blocked>",
33
+ "task_id": "<id>",
34
+ "modified_files": ["<path>"],
35
+ "diff": "<unified diff or empty string>",
36
+ "verification": [{"command": "<command>", "expected_or_observed": "<result>"}],
37
+ "residual_risk": ["<risk>"],
38
+ "blocked_by": ["<reason>"]
39
+ }
74
40
  """
@@ -13,12 +13,6 @@ value.
13
13
  - An active workflow command takes precedence over this default orchestration
14
14
  policy. Follow its phase rules, write boundaries, required tools,
15
15
  verification order, and stop/go gates exactly.
16
- - `/abel-design` is design-only: investigate and produce validated OpenSpec
17
- artifacts without implementing product code.
18
- - `/abel-implement` requires OpenSpec readiness and test-first Red, Green,
19
- Refactor cycles before completion is recorded.
20
- - `/abel-diagnose` requires reproduction and evidence for the root cause before
21
- a regression test and minimal fix.
22
16
  - Subagents assist inside the active phase. They never own workflow transitions
23
17
  or bypass required user confirmation.
24
18
 
@@ -5,9 +5,6 @@
5
5
  *.log
6
6
  */node_modules/
7
7
  */tmp/
8
- skills/dev-browser/profiles/
9
- skills/dev-browser/tmp/
10
- skills/dev-browser/.cache/
11
8
  *cache*/
12
9
  */dist/
13
10
  */build/
@@ -26,7 +26,28 @@ async function runCommand(command, args) {
26
26
  });
27
27
  }
28
28
 
29
- function buildCliToolInstallCommand({ packageName, skipScripts = false }) {
29
+ async function installCadence(run = runCommand) {
30
+ await run("pi", ["install", "npm:@abelxiaoxing/cadence"]);
31
+ }
32
+
33
+ function detectPackageManager(exists = commandExists) {
34
+ if (exists("bun")) return "bun";
35
+ if (exists("npm")) return "npm";
36
+ return null;
37
+ }
38
+
39
+ function buildCliToolInstallCommand({ packageManager = "npm", packageName, skipScripts = false }) {
40
+ if (packageManager === "bun") {
41
+ return {
42
+ command: "bun",
43
+ args: [
44
+ "add",
45
+ "-g",
46
+ ...(skipScripts ? ["--ignore-scripts"] : []),
47
+ packageName
48
+ ]
49
+ };
50
+ }
30
51
  return {
31
52
  command: "npm",
32
53
  args: [
@@ -52,7 +73,9 @@ function getNpmInstallHelp(platform = getPlatform()) {
52
73
  };
53
74
  }
54
75
 
55
- async function installCliTool(tool, { confirmOrCancel }) {
76
+ async function installCliTool(tool, { confirmOrCancel }, runtime = {}) {
77
+ const exists = runtime.commandExists ?? commandExists;
78
+ const run = runtime.runCommand ?? runCommand;
56
79
  const toolConfig = {
57
80
  claude: {
58
81
  label: "Claude Code",
@@ -74,16 +97,18 @@ async function installCliTool(tool, { confirmOrCancel }) {
74
97
 
75
98
  if (!toolConfig) throw new Error(`Unsupported tool: ${tool}`);
76
99
 
77
- if (!commandExists("npm")) {
100
+ const packageManager = detectPackageManager(exists);
101
+ if (!packageManager) {
78
102
  const help = getNpmInstallHelp();
79
- p.log.warn(`未检测到 npm,无法安装 ${toolConfig.label}。`);
80
- p.log.message(`${help.platformLabel} 可先安装 Node.js/npm,再重新运行安装。`);
103
+ p.log.warn(`未检测到 bun 或 npm,无法安装 ${toolConfig.label}。`);
104
+ p.log.message(`推荐先安装 Bun: https://bun.sh/install`);
105
+ p.log.message(`${help.platformLabel} 也可先安装 Node.js/npm,再重新运行安装。`);
81
106
  p.log.message(`中国大陆镜像: ${help.mainlandUrl}`);
82
107
  p.log.message(`官方下载页: ${help.officialUrl}`);
83
- return;
108
+ return false;
84
109
  }
85
110
 
86
- const installed = commandExists(toolConfig.command);
111
+ const installed = exists(toolConfig.command);
87
112
  if (installed) {
88
113
  const shouldUpdate = await confirmOrCancel({
89
114
  message: `${toolConfig.label} 已检测到,是否继续安装/更新?`,
@@ -91,16 +116,17 @@ async function installCliTool(tool, { confirmOrCancel }) {
91
116
  });
92
117
  if (!shouldUpdate) {
93
118
  p.log.message(`跳过 ${toolConfig.label} 安装。`);
94
- return;
119
+ return false;
95
120
  }
96
121
  }
97
122
 
98
- const installCommand = buildCliToolInstallCommand(toolConfig);
99
- const spinner = p.spinner();
100
- spinner.start(`正在使用 npm 安装 ${toolConfig.label}...`);
123
+ const installCommand = buildCliToolInstallCommand({ ...toolConfig, packageManager });
124
+ const spinner = (runtime.spinner ?? p.spinner)();
125
+ spinner.start(`正在使用 ${packageManager} 安装 ${toolConfig.label}...`);
101
126
  try {
102
- await runCommand(installCommand.command, installCommand.args);
127
+ await run(installCommand.command, installCommand.args);
103
128
  spinner.stop(`${toolConfig.label} 安装完成`);
129
+ return true;
104
130
  } catch (error) {
105
131
  spinner.cancel(c.red(`${toolConfig.label} 安装失败: ${error.message}`));
106
132
  throw error;
@@ -109,8 +135,10 @@ async function installCliTool(tool, { confirmOrCancel }) {
109
135
 
110
136
  export {
111
137
  buildCliToolInstallCommand,
138
+ detectPackageManager,
112
139
  getNpmInstallHelp,
113
140
  getRunCommandSpawnOptions,
114
141
  installCliTool,
142
+ installCadence,
115
143
  commandExists
116
144
  };
package/package.json CHANGED
@@ -1,20 +1,18 @@
1
1
  {
2
2
  "name": "abelworkflow",
3
- "version": "1.2.4",
4
- "description": "Install AbelWorkflow into ~/.agents and create Claude, Codex, and Pi links.",
3
+ "version": "1.3.0",
4
+ "description": "Install AbelWorkflow into ~/.agents and configure Claude, Codex, and Pi.",
5
5
  "type": "module",
6
6
  "scripts": {
7
- "test": "npm run build && npm run test:node",
7
+ "test": "npm run test:node",
8
8
  "test:node": "node --test test/*.test.mjs",
9
9
  "test:python": "python -B -m unittest discover -s test",
10
- "test:dev-browser": "npm test --prefix skills/dev-browser",
11
10
  "test:contracts": "node --test test/runtime-doc-contracts.test.mjs test/cli-args.test.mjs",
12
- "typecheck": "npm run typecheck --prefix skills/dev-browser",
13
- "build": "npm run build --prefix skills/dev-browser",
14
- "prepack": "npm run build",
11
+ "typecheck": "npm run typecheck:pi",
12
+ "typecheck:pi": "tsc -p tsconfig.pi.json",
15
13
  "check:docs": "node --test test/docs-contracts.test.mjs test/runtime-doc-contracts.test.mjs",
16
- "check:package": "npm run build && node --test test/package-contents.test.mjs",
17
- "check": "npm run build && npm run test:node && npm run test:python && npm run test:dev-browser && npm run typecheck"
14
+ "check:package": "node --test test/package-contents.test.mjs",
15
+ "check": "npm run test:node && npm run test:python && npm run typecheck"
18
16
  },
19
17
  "bin": {
20
18
  "abelworkflow": "bin/abelworkflow.mjs"
@@ -27,26 +25,23 @@
27
25
  "skills/context7-auto-research/.env.example",
28
26
  "skills/context7-auto-research/SKILL.md",
29
27
  "skills/context7-auto-research/context7-api.cjs",
30
- "skills/dev-browser/SKILL.md",
31
- "skills/dev-browser/dist",
32
- "skills/dev-browser/package-lock.json",
33
- "skills/dev-browser/package.json",
34
- "skills/dev-browser/references",
35
- "skills/git-commit/SKILL.md",
36
28
  "skills/grok-search/.env.example",
37
29
  "skills/grok-search/SKILL.md",
38
30
  "skills/grok-search/defaults.json",
39
31
  "skills/grok-search/requirements.txt",
40
32
  "skills/grok-search/scripts/_dotenv.py",
41
- "skills/grok-search/scripts/groksearch_cli.py",
42
- "skills/time/SKILL.md",
43
- "skills/time/scripts/time_cli.py"
33
+ "skills/grok-search/scripts/groksearch_cli.py"
44
34
  ],
45
35
  "engines": {
46
36
  "node": ">=22"
47
37
  },
48
38
  "packageManager": "npm@10.9.2",
49
39
  "license": "MIT",
40
+ "devDependencies": {
41
+ "@earendil-works/pi-coding-agent": "0.85.1",
42
+ "@types/node": "22.20.1",
43
+ "typescript": "5.9.3"
44
+ },
50
45
  "dependencies": {
51
46
  "@clack/prompts": "^1.2.0",
52
47
  "picocolors": "^1.1.1",