refacil-sdd-ai 4.5.2 → 4.5.4

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/README.md CHANGED
@@ -174,7 +174,7 @@ Some skills delegate their heavy work to **sub-agents** that run in isolated con
174
174
 
175
175
  **Common properties**: specialized system prompt, direct-invocation guardrail, output contract with a fenced JSON block per skill. Read-only sub-agents (`investigator`, `validator`, `auditor`) do not have `Edit`/`Write`. Write sub-agents (`tester`, `implementer`, `debugger`, `proposer`) do.
176
176
 
177
- **Model**: `refacil-proposer` runs with `model: opusplan` (uses Opus during plan mode for highest-stakes planning, then switches to Sonnet for execution). Other sub-agents use `model: sonnet` by default.
177
+ **Model**: `refacil-proposer` runs with `model: opusplan` (uses Opus during plan mode for highest-stakes planning, then switches to Sonnet for execution). Other sub-agents use `model: sonnet` by default for Claude Code, others use inherit model.
178
178
 
179
179
  **Triple-platform**: `.claude/agents/refacil-*.md` uses `tools:` (granular allowlist). `.cursor/agents/refacil-*.md` is auto-generated: `readonly: true` for agents without `Edit`/`Write`, `readonly: false` for those that have them; always `model: inherit`. `.opencode/agents/refacil-*.md` is auto-generated via `transformFrontmatterForOpenCode()`: converts `tools:` to a `permission:` block (`edit: allow/deny`, `bash: allow/deny`, `webfetch: deny`), adds `mode: subagent`, adds `hidden: true` for internal agents, and removes `model:`. The installer transforms the frontmatter automatically for all three IDEs.
180
180
 
@@ -2,7 +2,7 @@
2
2
  name: refacil-proposer
3
3
  description: Generates SDD-AI planning artifacts (proposal, specs, design, tasks) for any codebase. Delegated by /refacil:propose — do not invoke directly.
4
4
  tools: Read, Grep, Glob, Bash, Edit, Write
5
- model: sonnet
5
+ model: opusplan
6
6
  ---
7
7
 
8
8
  # refacil-proposer — Planning Artifact Generator
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "refacil-sdd-ai",
3
- "version": "4.5.2",
3
+ "version": "4.5.4",
4
4
  "description": "SDD-AI: Specification-Driven Development with AI — development methodology using AI with Claude Code, Cursor and OpenCode",
5
5
  "bin": {
6
6
  "refacil-sdd-ai": "./bin/cli.js"
@@ -55,24 +55,48 @@ Critical rule:
55
55
 
56
56
  ### Protocol when the current branch is protected
57
57
 
58
- If the current branch is protected and code needs to be written:
59
-
60
- 1. **Ask for a task identifier first** — before any git action, ask the user:
61
- *"What is the task number or name for this branch? (e.g. SEGINF-20, REF-123, or a short descriptive name)"*
62
- Wait for the user's answer before continuing.
63
- 2. Verify clean working directory (`git status --porcelain`).
64
- 3. If there are uncommitted changes, ask for approval to `git stash push -m "auto-stash-refacil"`.
65
- 4. Detect the base branch to create a working branch from:
58
+ If the current branch is protected and code needs to be written, follow the gates below strictly. Each gate is a hard stop — do not proceed to the next gate until the user has replied in the current one.
59
+
60
+ ---
61
+
62
+ **[GATE 1 STOP AND WAIT: ask for task identifier]**
63
+
64
+ Ask the user exactly this question and then STOP. Do NOT run any git command. Do NOT propose a branch name. Do NOT continue to Gate 2 until the user replies:
65
+
66
+ > "What is the task number or identifier for this branch? (e.g. SEGINF-20, REF-123, or a short descriptive name)"
67
+
68
+ If the user says they have no ID, note that and proceed to Gate 2 with `<ID> = none`.
69
+
70
+ ---
71
+
72
+ **[GATE 2 — STOP AND WAIT: propose branch name and ask for approval]**
73
+
74
+ Only after receiving the user's reply to Gate 1:
75
+
76
+ 1. Verify clean working directory (`git status --porcelain`).
77
+ 2. If there are uncommitted changes, ask for approval to stash them (`git stash push -m "auto-stash-refacil"`). Do NOT stash without approval.
78
+ 3. Detect the base branch:
66
79
  - Prefer `develop`, then `dev`.
67
80
  - Only if neither exists (new repo), use `main` or `master` as a temporary exception.
68
- - Switch and update (`git pull origin <base>`). If none exist, stop.
69
- 5. **Propose the branch name and wait for explicit user approval before creating it:**
81
+ 4. Compose the branch name:
70
82
  - Feature: `feature/<ID>` (e.g. `feature/SEGINF-20`)
71
83
  - Bugfix: `fix/<ID>` (e.g. `fix/SEGINF-20`)
72
- - Without ID: propose a short descriptive name (e.g. `fix/project-root-consistency`) and **require explicit approval** before proceeding.
73
- Example: *"I'll create branch `fix/SEGINF-20` from `develop`. Shall I proceed?"*
74
- 6. **Only after explicit user confirmation**: create the branch and restore stash if used.
75
- 7. If the user does not approve at any point, stop.
84
+ - Without ID: propose a short descriptive name (e.g. `fix/session-timeout-redis`)
85
+ 5. Present the proposed name and ask for approval. Then STOP. Do NOT run `git checkout` or `git switch`. Do NOT create the branch yet. Wait for the user's explicit confirmation:
86
+
87
+ > "I'll create branch `<proposed-name>` from `<base-branch>`. Shall I proceed?"
88
+
89
+ ---
90
+
91
+ **[GATE 3 — execute only after explicit approval from Gate 2]**
92
+
93
+ Only after the user explicitly confirms (e.g. "yes", "go", "ok", "proceed"):
94
+
95
+ 1. Switch to the base branch and update it (`git checkout <base>` + `git pull origin <base>`).
96
+ 2. Create the working branch (`git checkout -b <branch-name>`).
97
+ 3. If a stash was approved in Gate 2, restore it (`git stash pop`).
98
+
99
+ If the user does not approve at Gate 2, stop entirely. Do not create any branch.
76
100
 
77
101
  ## §5 — Output policy (UX)
78
102