Skip to main content

sage-build

Brief (medium+ tasks), Spec, Implementation plan

소스 정보

저장소
xoai/sage
최근 소스 활동
2026년 8월 5일 18:24
감지된 SKILL.md 언어
영어
스타
27
포크
7

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
sage-build
description
Brief (medium+ tasks), Spec, Implementation plan
version
1.0.0
author
Sage
metadata
{"hermes":{"tags":["Sage","Workflow","build"]}}
## When to Use Load this skill when the user runs `/sage-build` or asks to build something (the Sage build workflow). ## Arguments Hermes does NOT interpolate an in-body argument token. The user's arguments/flags arrive as a SEPARATE instruction line appended to this skill invocation. Wherever the steps below refer to "the user's arguments", use the text of that appended instruction line. ## Independent review (delegate_task) When a step calls for an independent review, invoke `delegate_task` against the `sage-reviewer` skill. Hermes delegate_task has NO toolset-restriction parameter — read-only is prompt-enforced, and you MUST verify afterward that the reviewer made no edits (e.g. `git status` unchanged) before accepting its verdict. RULES (apply to every step — non-negotiable): - PERSONA: Read sage/core/agents/developer.persona.md for your mindset. - Announce: "Sage → build workflow." before starting work - FLAG PARSING: Before any other work, parse the arguments the user provided alongside this skill invocation (delivered as a separate instruction line, NOT a literal token) by invoking the deterministic parser (in order — use the first one that works): 1. python3 sage/runtime/tools/sage_flags.py parse "the arguments the user provided alongside this skill invocation (delivered as a separate instruction line, NOT a literal token)" --config-path .sage/config.yaml 2. Prose-fallback per sage/core/capabilities/orchestration/flag-parser/SKILL.md Trust the JSON output unconditionally. If "error" is non-null, surface it to the user and stop. Recognized flags: --quality-locked loop review/revise until clean (cap 10) --no-quality-locked override config default to off for this run --autonomous agent makes elicitation decisions --no-autonomous override config default to off for this run When announcing active modes, use the quality_locked_source and autonomous_source fields from the JSON to label sources, e.g. "Modes: --quality-locked (from .sage/config.yaml), --autonomous (from flag)". Persist flag state to manifest.md frontmatter under "flags:". - MEMORY FIRST: Before writing spec, plan, or starting implementation, search sage-memory with the feature domain as query (limit: 5), then search again with filter_tags: ["self-learning"] (limit: 5). Use findings to avoid past mistakes. This is MANDATORY, not optional. - Standard+ scope: spec.md MUST EXIST at .sage/work/ before implementing. "Design is clear" is NOT a spec. "We discussed this" is NOT a spec. A spec is a FILE. No file = no implementation. Write it first. - [A] = REVIEW: When user picks [A] at spec or plan checkpoint, you MUST run auto-review sub-agent BEFORE proceeding to the next phase. [S] = Skip review (approve without review). Present [A] Review / [S] Skip review at every spec and plan checkpoint. If you proceed without showing auto-review findings after [A], you have violated the process. Blocked rationalizations: - "The spec is straightforward" — [A] means review. Period. - "The user wants to move fast" — they picked [A], not [S] - "I already reviewed while writing" — self-review is not independent - "delegate_task might not work" — check first, skip only if truly unavailable - GATE 3 INDEPENDENT: Code quality review (Gate 3) MUST use sub-agent when delegate_task is available. Do NOT self-review when sub-agent is possible. - GATE 8 AUTO-QA: Runs as part of quality gates sequence (Gate 8). Do NOT skip because "quality gates already passed." It runs by position in the gate sequence, not by your discretion. - QUALITY-LOCKED LOOP: When --quality-locked flag is active, at every review checkpoint use the deterministic checker: python3 sage/runtime/tools/sage_flags.py check --review-output "<sub-agent text>" --iteration <N> --history-json "<JSON of past iterations>" Trust the returned JSON (counts, action). Do NOT decide "clean enough" by reading findings yourself. See sage/core/capabilities/orchestration/quality-locked/SKILL.md. - AUTO-PICK [A] WHEN BOTH FLAGS ACTIVE: If both --autonomous AND --quality-locked are set, do NOT prompt the user at normal approval checkpoints (spec, plan, ADR, root cause, fix plan). Auto-pick [A] Review (the only option consistent with both flags). Print the auto-pick notice, log to manifest.md auto_picked_checkpoints AND decisions.md BEFORE running the review, then proceed. Exception checkpoints (quality-locked cap-reached, stuck-escalation, autonomous unconfident-questions, sub-agent unavailable) still require user input. See sage/core/capabilities/orchestration/autonomous/SKILL.md "Auto-Pick at Checkpoints" for full rules. - CODING PRINCIPLES: Load sage/core/capabilities/execution/coding-principles/SKILL.md before every implementation task. 7 universal principles: clarity, error handling, boundary guards, minimal scope, safe APIs, consistency, behavior testing. - Save ALL artifacts to .sage/work/ or .sage/docs/ — never inline-only - Checkpoints: present with [A] Review / [S] Skip review / [R] Revise — wait for response - Choices: present with [1] [2] [3] bracket notation - Verify: PASTE actual test output before claiming done — no summaries - Never use code blocks for interaction (checkpoints, options, status) - If user corrects your approach, store as self-learning before continuing # Build Workflow Feature development guided by Sage. ## Auto-Pickup BEFORE ANYTHING: Scan `.sage/work/` for existing artifacts. This scan is MANDATORY — check the DISK. **Manifest-first path:** If `.sage/work/*/manifest.md` exists, run `python3 sage/runtime/tools/manifest.py resume` (plugin installs: `python3 "${CLAUDE_PLUGIN_ROOT}/tools/manifest.py" resume`; no python3 → read the manifest by hand). The brief it prints is the primary context source: resume at the phase indicated, with the manifest body as judgment *context, not orders* — apply the resume authority order (cycle-protocol.md): live user > recorded decisions > manifest prose, and evidence over all of it. **Fallback path:** If no manifest.md but artifacts exist, use file-scan routing (below). Create manifest.md from inferred state before proceeding (backfill). This preserves backward compatibility with pre-v1.0.9 cycles. **File-scan routing (when no manifest):** - No artifacts exist → Step 2 (scope assessment) - Brief exists, no spec → Step 4 (spec) - Spec exists, no plan → Step 5 (plan) - Plan exists, not all completed → Step 6 (build-loop) - All status: completed → offer next steps You MUST follow this routing. Do not override it based on: - Conversation context ("we discussed this before") - User description ("the design is clear") - Your own assessment ("this is straightforward") The disk is the source of truth. Not your memory. **Multiple in-progress:** Present list: [1] Continue [initiative A] — [phase] [2] Continue [initiative B] — [phase] [3] Start something new **Branch check (git projects):** when resuming, compare the current branch against the initiative's recorded `branch:` manifest field (see git-discipline); if they differ, surface it before proceeding. Prefer the initiative whose recorded branch matches HEAD. Read the initiative's decision log for recent context (global `.sage/decisions.md` for cross-initiative context). Read the `handoff` field in the most recent artifact's frontmatter if present. **Upstream context:** Also scan `.sage/docs/` for research and analysis artifacts (jtbd-*, ux-audit-*, opportunity-*, ux-evaluate-*). If found, announce: "Sage: Found research/analysis context — [list]. Using as build input." ### Manifest Lifecycle (build workflow) **Create** manifest.md when the first artifact is saved (brief or spec). Use the template from `core/templates/manifest-template.md`. **Update** manifest.md at EVERY checkpoint: - Every [A]/[R]/[N] gate: update phase, status, `gate_state`, updated timestamp - Phase transitions: update context summary if new information emerged - New decisions: append to the manifest's decisions list **gate_state at each checkpoint (machine field — the spec-gate hook reads it):** - Spec approved `[A]` → `gate_state: spec-approved` - Plan approved `[A]` → `gate_state: plan-approved` - Entering the build-loop (Step 6) → `gate_state: building` - All quality gates pass → `gate_state: gates-passed` - Step 8 completion → `gate_state: complete` Until `gate_state` reaches `spec-approved`, the Claude Code hook blocks edits to source files — that is Rule 3 made mechanical. Advance it the moment the spec is approved, not "later"; a stale `pre-spec` keeps blocking the very work you just approved. **Context budget pressure:** If the conversation is very long (many tool calls, approaching context limits), write a manifest update BEFORE suggesting a session break. This is the critical moment — capture the judgment that's about to be lost. **Session end ([N]):** Manifest update is MANDATORY. Write handoff guidance and context summary before ending. **Completion:** Set `status: complete` and `gate_state: complete` at Step 8. The completion guard blocks this transition unless `gate_state` was already `gates-passed` — so run the quality gates before closing (Rule 5). **Anti-lazy-manifest contract:** Context summary MUST NOT be: - A copy of the spec's title or description - "See spec.md for details" - Generic guidance ("Continue with implementation") The summary must contain judgment the spec doesn't contain. **Shared cycle protocol:** decision-log targeting (Rule 7), gate_state discipline, phase announcements, and the session-break contract are shared across the delivery workflows — see `core/workflows/_shared/cycle-protocol.md`. ## Phase Announcements At each major phase transition, announce before doing any phase work: ``` Sage: Entering UNDERSTAND phase [cycle-id] — gathering requirements via quick-elicit. Sage: Entering PLAN phase [cycle-id] — creating implementation plan from spec. Sage: Entering DELIVER phase [cycle-id] — implementing with TDD and quality gates. Sage: Entering REVIEW phase [cycle-id] — running quality verification. ``` The cycle ID is the directory name under `.sage/work/` (e.g., `20260324-auth-flow`). ## Step 2: Assess Scope Classify by structural complexity — not time, not gut feeling. **Lightweight:** One component, no design decisions, no behavior changes visible to other team members. The change is obvious from the request. → Skip to Step 6, implement directly. **Standard:** Multiple components, OR any design decision, OR coordination between modules. Spec file REQUIRED. → spec.md MUST exist at .sage/work/ before implementation. → plan.md MUST exist at .sage/work/ before implementation. → If the task also needs scope definition, write brief first (Step 3). **Comprehensive:** New subsystem, cross-cutting changes, or multiple stakeholder impact. → MUST write brief (Step 3) → spec (Step 4) → plan (Step 5) → implement. **Complexity signals** (any ONE makes it Standard or above): - Touches more than 3 files - Involves a new API endpoint or data model change - Requires coordination between multiple modules or services - Has user-facing behavior changes (new UI, changed flow) - Involves a decision a team member would need to know about - Multiple layers affected (database + backend + frontend) **Anti-downgrade:** When in doubt, classify as Standard, not Lightweight. Do NOT downgrade to Lightweight to avoid writing a spec. If you find yourself thinking "this is simple enough to skip the spec," that thought is the signal to NOT skip the spec. Present your assessment: **Sage → build workflow.** [Scope] — [what makes it this scope]. Starting with [first required step]. If the user explicitly asks to skip a required step, write a minimal 5-line spec anyway (WHAT, WHY, HOW, DONE-WHEN), present [A]/[R], and record the skip rationale in decisions.md. ## Step 2.5: Branch Setup (Standard+ scope, git projects) For Standard or Comprehensive scope in a git repository, create the initiative branch before any artifact or code work: read and follow `sage/core/capabilities/execution/git-discipline/SKILL.md` — propose `feat/<slug>`, confirm with the user, create from the default branch, and record the branch name in the initiative's manifest frontmatter (`branch:`). The capability owns dirty-tree, already-on-a-branch, detached-HEAD, and decline handling. Lightweight scope skips branching (it produces no multi-commit initiative). Not a git repository → skip silently. **Parallel-session note (`isolation: worktree`).** If `isolation:` in `.sage/config.yaml` is `worktree` and this session is in the main checkout (not a linked worktree), apply the **worktree bounce** from git-discipline (offer `sage worktree <slug>` as a guided menu) before branching in place. With `isolation: branch` (default), ignore this — branch in place as below. ## Step 3: Brief (Standard with unclear scope, or Comprehensive) If scope is unclear or the task is Comprehensive, elicit requirements before defining the brief. **If `autonomous_mode` is active** (from flag-parser): skip the interactive elicitation rounds. Read `sage/core/capabilities/orchestration/autonomous/SKILL.md` and follow its pre-flight + decision protocol. Produce brief.md with a Rationale block citing memory, codebase patterns, principles, and prior decisions. If substantive unconfident decisions remain, surface them as a Zone 1 question block. Skip the rest of this step. **Otherwise:** For structured elicitation process, read `sage/core/capabilities/elicitation/quick-elicit/SKILL.md`. It provides 3 focused rounds (~2 minutes): 1. Intent — what should this do when working perfectly? 2. Boundaries — what should this NOT do? 3. Verification — how will we know it works? If quick-elicit cannot be loaded, ask these three questions directly and draft a brief from the answers. Define: what to build, why, acceptance scenarios, and constraints. Save to `.sage/work/YYYYMMDD-slug/brief.md` with frontmatter: ```yaml ``` 🔒 **CHECKPOINT:** Sage: Brief saved to .sage/work/YYYYMMDD-slug/brief.md Decision: [key scope decisions]. (prepend to the initiative's decisions.md) [A] Approve — continue to spec in this session [R] Revise — tell me what to change [N] New session — type /build to continue with spec Pick A/R/N, or tell me what to change. On approval: update brief frontmatter to `status: completed`. Prepend decision to decisions.md (Rule 7). ## Step 4: Spec Define: components, data model, APIs, key decisions, edge cases. Resolve open questions from the brief. **If `autonomous_mode` is active**: populate the spec using the autonomous capability's decision protocol. Include a Rationale block at the top of spec.md citing context sources. Surface unconfident substantive decisions as Zone 1 questions before finalizing. For detailed spec writing process, read `sage/core/capabilities/planning/specify/SKILL.md`. Save to `.sage/work/YYYYMMDD-slug/spec.md` with frontmatter: ```yaml ``` 🔒 **CHECKPOINT:** Sage: Spec saved to .sage/work/YYYYMMDD-slug/spec.md Decision: [key technical decisions]. (prepend to the initiative's decisions.md) [A] Review — sub-agent reviews spec, then continue to plan [S] Skip review — approve without independent review [R] Revise — tell me what to change [N] New session — type /build to continue with planning Pick A/S/R/N, or tell me what to change. **On [A] Review:** 1. Update spec frontmatter to `status: completed`. 2. Write `handoff` field in frontmatter: ```yaml handoff: | Key decisions: [summary of choices made] Open questions: [what's unresolved] Risks: [what to watch for during implementation] Next agent should: [specific guidance for planning phase] ``` 3. Prepend decision to decisions.md (Rule 7). 4. **Run auto-review BEFORE proceeding to Step 5:** Read `sage/core/capabilities/review/auto-review/SKILL.md`. If conditions met (delegate_task available + Standard+ scope + auto_review ≠ false in config): Announce: "⚡ Running spec review (sub-agent)..." Spawn sub-agent with the **Spec Review** prompt. Pass the spec path and decisions.md path. Present findings inline (see capability for format). Prepend review verdict to decisions.md. **If `quality_locked_mode` is active** (from flag-parser): Read `sage/core/capabilities/orchestration/quality-locked/SKILL.md` and run the review-revise loop instead of presenting findings to user. Loop until the checker's exit decision (v1: clean bar or cap 10, logged to manifest; `review_loop: v2`: the ledger controller — `review.py close-round` computes and records every verdict). If delegate_task NOT available: Announce: "delegate_task not available — skipping independent review." 5. THEN proceed to Step 5. **On [S] Skip review:** 1. Update spec frontmatter, write handoff, append decision (same as above). 2. Announce: "Skipping independent review." 3. Log to decisions.md: "Spec approved without auto-review (user chose [S])." 4. Proceed to Step 5. ## Step 5: Plan Break into small, independently testable tasks. Each task: what to do, done criteria, files involved. Use checkboxes as a guide. **If `autonomous_mode` is active**: decompose tasks using the autonomous capability's decision protocol. Each task's rationale (ordering, dependencies, scope) cites codebase patterns or prior plans where relevant. Include a Rationale block at the top of plan.md. For detailed planning process, read `sage/core/capabilities/planning/plan/SKILL.md`. Save to `.sage/work/YYYYMMDD-slug/plan.md` with frontmatter: ```yaml ``` 🔒 **CHECKPOINT:** Sage: Plan saved to .sage/work/YYYYMMDD-slug/plan.md [A] Review — sub-agent reviews plan, then start building [S] Skip review — approve without independent review [R] Revise — tell me what to change [N] New session — type /build to start implementation Pick A/S/R/N, or tell me what to change. **On [A] Review:** 1. Prepend plan approach to decisions.md (Rule 7). 2. **Run auto-review BEFORE proceeding to Step 6:** Read `sage/core/capabilities/review/auto-review/SKILL.md`. If conditions met (delegate_task available + Standard+ scope + auto_review ≠ false in config): Announce: "⚡ Running plan review (sub-agent)..."
GitHub에서 보기
이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기