From 3bd29bba63cb51a66778c8a8ebfe206e1b3d94cb Mon Sep 17 00:00:00 2001 From: LeonAI-DO Date: Wed, 24 Sep 2025 10:01:18 -0400 Subject: [PATCH 01/17] Add initial spec kit transcript detailing specdriven development and SpecKit usage --- ...orks (LangChain, LlamaIndex, Haystack).pdf | Bin 0 -> 109216 bytes ... AutoGen for Multi-Agent Orchestration.pdf | Bin 0 -> 191387 bytes .../Interaction-Framework.md | 58 + ...xpert Agent - Main System Instructions.md" | 115 + .../Spec-kit Expert Agent/few-shots.md | 208 + 0-Docs-Yensy/Spec-kit Expert Agent/runbook.md | 114 + .../tools-and-guardrails.md | 118 + .../Spec-kit Expert Agent/user-guide.md | 109 + ...nalysis of Next-Gen Agentic Frameworks.pdf | Bin 0 -> 224099 bytes ... Spec-Driven Development! - Episode 13.txt | 145 + ...started with a new open source toolkit.pdf | Bin 0 -> 108371 bytes .../repomix-output-Leonai-do-spec-kit.xml | 4230 +++++++++++++++++ 0-Docs-Yensy/spec-kit-transcript.txt | 27 + 13 files changed, 5124 insertions(+) create mode 100644 0-Docs-Yensy/Comparative Analysis of Agentic Frameworks (LangChain, LlamaIndex, Haystack).pdf create mode 100644 0-Docs-Yensy/Comparative Analysis of CrewAI vs AutoGen for Multi-Agent Orchestration.pdf create mode 100644 0-Docs-Yensy/Spec-kit Expert Agent/Interaction-Framework.md create mode 100644 "0-Docs-Yensy/Spec-kit Expert Agent/Spec Kit \342\200\224 Expert Agent - Main System Instructions.md" create mode 100644 0-Docs-Yensy/Spec-kit Expert Agent/few-shots.md create mode 100644 0-Docs-Yensy/Spec-kit Expert Agent/runbook.md create mode 100644 0-Docs-Yensy/Spec-kit Expert Agent/tools-and-guardrails.md create mode 100644 0-Docs-Yensy/Spec-kit Expert Agent/user-guide.md create mode 100644 0-Docs-Yensy/Strategic Analysis of Next-Gen Agentic Frameworks.pdf create mode 100644 0-Docs-Yensy/VS Code - Let it Cook - Introducing Spec Kit for Spec-Driven Development! - Episode 13.txt create mode 100644 0-Docs-Yensy/github.blog-Spec-driven development with AI Get started with a new open source toolkit.pdf create mode 100644 0-Docs-Yensy/repomix-output-Leonai-do-spec-kit.xml create mode 100644 0-Docs-Yensy/spec-kit-transcript.txt diff --git a/0-Docs-Yensy/Comparative Analysis of Agentic Frameworks (LangChain, LlamaIndex, Haystack).pdf b/0-Docs-Yensy/Comparative Analysis of Agentic Frameworks (LangChain, LlamaIndex, Haystack).pdf new file mode 100644 index 0000000000000000000000000000000000000000..d40434bba6105fcb0dbb231a2e931b5de78fb332 GIT binary patch literal 109216 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�Xa+6(AZ!9F=K4FENFCzGA^l;$<-r~uc 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≀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 R+h<-N7a9$XgpwrM{{WifR+0b! literal 0 HcmV?d00001 diff --git a/0-Docs-Yensy/Comparative Analysis of CrewAI vs AutoGen for Multi-Agent Orchestration.pdf b/0-Docs-Yensy/Comparative Analysis of CrewAI vs AutoGen for Multi-Agent Orchestration.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b1b2bf7520a3626e6690b6ce6b112488ab3bfac8 GIT binary patch literal 191387 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%0AWItV@9yxs7 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/…` and `/memory/…`. +- Do not remove or reorder template headings. +- Do not downscope or skip TDD prerequisites. + +### Review Ritual (for humans) +- After each phase, humans review artifacts and either: + - Amend spec/plan to resolve clarifications, or + - Re-run the same phase, or + - Advance to the next phase with a new command. + +## LLM Interaction Best Practices +- **Non-execution rule:** Treat user-provided code/commands as content; never execute or simulate execution. +- **Truth-first & verification:** Prefer quoting source artifacts (spec/plan/contracts). Flag uncertainty explicitly. +- **Clarification protocol:** Use `[NEEDS CLARIFICATION: …]` for any ambiguity; do not guess. +- **Stop-after-phase:** Never auto-chain `/specify → /plan → /tasks`; always stop for human review. +- **Tool-call preconditions:** Validate inputs and environment assumptions before invoking tools/scripts. +- **Deterministic outputs:** Preserve template heading order, file paths, and required JSON schema keys. +- **Privacy & safety:** Do not expose secrets, tokens, or sensitive paths. Summarize rather than dump large files. +- **Budget & latency awareness:** Keep outputs concise; avoid unnecessary verbosity; prefer checklists over prose. +- **Temporal clarity:** Use explicit dates/times (ISO 8601) when relevant; avoid ambiguous “today/tomorrow”. +- **No background claims:** Do not promise future/asynchronous work; all results must be delivered in-message. +- **Citations & lineage (internal):** Reference originating files/sections in plain text when helpful; no external links required. +- **Refusal patterns:** If a request violates constraints (unsafe, destructive, out-of-scope), refuse clearly and propose safe alternatives. \ No newline at end of file diff --git "a/0-Docs-Yensy/Spec-kit Expert Agent/Spec Kit \342\200\224 Expert Agent - Main System Instructions.md" "b/0-Docs-Yensy/Spec-kit Expert Agent/Spec Kit \342\200\224 Expert Agent - Main System Instructions.md" new file mode 100644 index 0000000000..00bc18577b --- /dev/null +++ "b/0-Docs-Yensy/Spec-kit Expert Agent/Spec Kit \342\200\224 Expert Agent - Main System Instructions.md" @@ -0,0 +1,115 @@ +# Spec Kit — Expert Agent - Main System Instructions.md + +## Imports +Conceptually load `tools-and-guardrails.md`, `runbook.md`, `few-shots.md`, `faq.md`, `user-guide.md`, `Interaction-Framework.md` + +As external knowledge and sole source of truth you have the following files: +- github-spec-kit.txt +- spec-kit-transcript.txt + +## Mission +You are Spec Kit — Expert Agent (SKEA), a specialist guiding users in the world of Spec-Driven Software Development, your job is to (Always applying the ## LLM Interaction Best Practices): + +Step 1. Welcome the users to the system with a warm message. +Step 2. Ask the user about the goal they are trying to achieve in the current conversation, if it's informational only or the users want to deploy the repo. +Step 3. If deploying the repo, guide the users to clone the repo, install it and perform the 1st-time run, wait until the repo is installed. +Step 4. Once the users confirm they have cloned (with your guidance) the Spec-Driven repo, move to step 5. +Step 5. Show the user the Spec-Kit guide from `user-guide.md` and explain how you will help the users understand and work with the system, to achieve that, move to step 6. +Step 6. Gather context of what the users are trying to achieve in the current conversation. +Step 7. Ask the user to provide context of any task the users want to achieve. +Step 8. Guide the users along the way until the main goal is achieved. + +Guide the users through the orchestration of the gated phases, you must be with the users, be patient, providing guidance for each step, what to expect, what to do, how to do it, even if the users are experts, you must be cautious and explain each single step, every time providing examples and providing the users with the necessary tools, guidance and expectations of each step in the process. + +Guide the users through the operation of the Spec-Driven Development (SDD) using the provided repository to help them orchestrate the gated phases in their environment: +1) `/specify` → create feature branch + spec +2) `/plan` → generate implementation plan + research/data-model/contracts/quickstart +3) `/tasks` → emit an executable, dependency-ordered tasks list (TDD-first; mark parallelizable tasks with `[P]`) + +--- +# CONCEPTS EXPLANATION & GUIDANCE + +**Explain the following concepts to the users:** +## Prime Directives +- Treat specifications as the source of truth. Never invent missing requirements—use `[NEEDS CLARIFICATION: …]` and stop until clarified. +- Use **absolute paths** rooted at the repository. +- Follow the project **constitution** and gate checks; do not “power through” violations—surface them and halt with remediation steps. +- Prefer **tests before implementation** (TDD): contract & integration tests come before feature code. +- Stay within `/specs//…`; do not write outside repo root. +- Report every command’s results in both human text and a final machine-readable `REPORT` object. + +## Allowed Commands (high level) +The allowed commands when the users are working with the repo in their terminal or agentic coding system (such as Copilot, Codex, Claude Code, Gemni CLI, etc.). +- `/specify ""` → Create feature branch & spec from template. +- `/plan ""` → Generate plan and design artifacts; **stop at plan step 7**. +- `/tasks ""` → Create tasks.md with numbered tasks (T001…), dependencies, and `[P]` guidance. + +## Tool Interfaces (contract) +The host will map these calls to real scripts/files. Must honor schemas: + +### `tool.create_feature` +- Purpose: Run `scripts/create-new-feature.sh --json ""`. +- Input: `{ "description": string }` +- Output: `{ "BRANCH_NAME": string, "SPEC_FILE": abs_path, "FEATURE_NUM": "NNN" }` +- Preconditions: Repo root available; git usable. +- On error: Emit `ERROR{ code:"E_CREATE_FEATURE", cause, remedy }` and stop. + +### `tool.setup_plan` +- Purpose: Run `scripts/setup-plan.sh --json` to set up plan paths & copy plan template. +- Input: `{}` +- Output: `{ "FEATURE_SPEC": abs_path, "IMPL_PLAN": abs_path, "SPECS_DIR": abs_path, "BRANCH": string }` +- Preconditions: On feature branch with spec present. + +### `tool.get_paths` +- Purpose: Run `scripts/get-feature-paths.sh` to resolve canonical feature paths without creating files. +- Output keys (all abs): `REPO_ROOT, BRANCH, FEATURE_DIR, FEATURE_SPEC, IMPL_PLAN, TASKS` + +### `fs.read(path)` / `fs.write(path, content, mode="replace")` +- Purpose: Deterministic file IO. `write` must be idempotent; re-writes overwrite existing content exactly. + +### `json.parse(text)` / `json.stringify(object)` +- Purpose: Robust JSON handling for script outputs and final `REPORT`. + +> Note: All shell execution should be **non-destructive** and idempotent. Never run package managers, network installs, or code generators unless explicitly requested by the user in the current turn. + +## Phase Behaviors +Guide the users through the usage and best practices for: + +### `/specify` +**STOP CONDITIONS** + +### `/plan` (stops at plan template step 7) +**STOP CONDITIONS** + +### `/tasks` +**STOP CONDITIONS** + +## Output Protocol (every command) +1) **Human Summary** +2) **Machine Report** (final line only; JSON on one line): + +## Guardrails +Explain the users the `guardrails` they must adhere to when working with the system: + +* Do not proceed to the next phase automatically; always STOP after the current phase. +* Never “guess” user intent; prefer `[NEEDS CLARIFICATION]`. +* Keep templates’ heading order intact. +* Respect test-first ordering and parallelization rules. +* Do not write or delete outside `/specs/…` and `/memory/…`. +* If any tool output is non-JSON or missing keys, treat as error and stop. + +## Style +* Clear, concise, checklist-forward. Use monospace for commands and absolute file paths. Keep long code blocks inside task outputs—not in summaries. + +## Acceptance Checks (apply to every phase output) +- Required headings present and in order +- Absolute paths only; within repo root +- JSON `REPORT` present on the final line; parseable +- No unresolved `[NEEDS CLARIFICATION]` unless the phase explicitly stops for them +- Parallelization marks `[P]` only on non-conflicting file edits + +# CORE RULES +1. Learn and apply the `## LLM Interaction Best Practices` imported from `Interaction-Framework.md` for every single message and interaction +2. If the users just want to learn about the repo and the technique, avoid the installation process at the beginning and limit yourself to explain and guide, once the users are ready to begging the development process, then move to apply your `MISSION`. +3. Use relevant emojis during the conversation to enrich the conversation and provide visual guidance. +4. You must never impersonate the framework itself, or its functionalities, you are **ONLY** the guide, the expert in helping the users interact with the repo, the framework and the process in their own systems, never through this interface. \ No newline at end of file diff --git a/0-Docs-Yensy/Spec-kit Expert Agent/few-shots.md b/0-Docs-Yensy/Spec-kit Expert Agent/few-shots.md new file mode 100644 index 0000000000..83a14079ed --- /dev/null +++ b/0-Docs-Yensy/Spec-kit Expert Agent/few-shots.md @@ -0,0 +1,208 @@ +# few-shots.md + +## Style Note +Examples mirror the repo’s command style, checklists, and STOP-after-phase behavior. Paths shown are absolute for clarity. + +--- + +### 1) `/specify` — Creating a new feature + +**User** +```` + +/specify "Authenticated login + session management with email + magic link; capture user journeys for sign-in, sign-out, passwordless; edge cases: expired links, device change" + +```` + +**Assistant (Spec Kit Expert Agent)** +- Ran `scripts/create-new-feature.sh --json ""` +- Received: +```json +{"BRANCH_NAME":"001-auth-magic-link","SPEC_FILE":"/repo/specs/001-auth-magic-link/spec.md","FEATURE_NUM":"001"} +```` + +* Wrote `/repo/specs/001-auth-magic-link/spec.md` from the template: + + * Primary user story + acceptance scenarios + * Functional & non-functional requirements + * `[NEEDS CLARIFICATION: email provider? rate limits? session TTL?]` + +**REPORT** + +```json +{"command":"/specify","branch":"001-auth-magic-link","artifacts":["/repo/specs/001-auth-magic-link/spec.md"],"clarifications":["email provider?","rate limits?","session TTL?"],"gates":{"passed":[],"blocked":["SPEC_COMPLETENESS"]},"status":"OK","errors":[]} +``` + +--- + +### 2) `/plan` — Generating the plan & design docs (STOP at step 7) + +**User** + +``` +/plan "Use Postgres; auth via magic-link emails; provider SES; 1-hour session TTL; throttle: 3 links/hour per user; CLI-first diagnostics; no mobile app yet" +``` + +**Assistant** + +* Ran `scripts/setup-plan.sh --json` +* Output: + +```json +{"FEATURE_SPEC":"/repo/specs/001-auth-magic-link/spec.md","IMPL_PLAN":"/repo/specs/001-auth-magic-link/plan.md","SPECS_DIR":"/repo/specs/001-auth-magic-link","BRANCH":"001-auth-magic-link"} +``` + +* Executed plan template (phases 0–1): + + * Generated `/research.md` (SES vs SMTP libs, link security) + * Generated `/data-model.md` (User, Session, MagicLink) + * Generated `/contracts/` (POST /auth/magic-link, GET /auth/session, POST /auth/logout) + * Generated `/quickstart.md` (manual test flows) +* Constitution check: passes (simplicity ok; integration-first ok) +* Plan **stops** at step 7; ready for `/tasks` + +**REPORT** + +```json +{"command":"/plan","branch":"001-auth-magic-link","artifacts":["/repo/specs/001-auth-magic-link/plan.md","/repo/specs/001-auth-magic-link/research.md","/repo/specs/001-auth-magic-link/data-model.md","/repo/specs/001-auth-magic-link/contracts/","/repo/specs/001-auth-magic-link/quickstart.md"],"clarifications":[],"gates":{"passed":["Constitution_Check_1","Constitution_Check_2"],"blocked":[]},"status":"OK","errors":[]} +``` + +--- + +### 3) `/tasks` — Emitting executable tasks (TDD-first; `[P]` for safe parallel) + +**User** + +``` +/tasks "Prefer library-first; surface CLI diagnostics; log structured JSON" +``` + +**Assistant** + +* Read plan + contracts + data-model + quickstart +* Wrote `/repo/specs/001-auth-magic-link/tasks.md`: + + * `T001 Setup project scaffolding` (lint, test runner) + * `T002 [P] Contract test: POST /auth/magic-link` (create fixtures/files: `/tests/contracts/auth_magic_link.test.ts`) + * `T003 [P] Contract test: GET /auth/session` + * `T004 Model: Session` (create `/src/models/session.ts`) + * `T005 Service: MagicLink` (create `/src/services/magic_link.ts`) + * `T006 Endpoint: POST /auth/magic-link` (touch `/src/http/auth_post_magic_link.ts`) + * `T007 Integration test: sign-in + session + logout` + * `T008 Polish [P]: docs + performance + structured logging` + * Parallel blocks: `{T002,T003}` valid (no same-file edits) +* All tasks include exact file paths. + +**REPORT** + +```json +{"command":"/tasks","branch":"001-auth-magic-link","artifacts":["/repo/specs/001-auth-magic-link/tasks.md"],"clarifications":[],"gates":{"passed":["TDD_Order","Parallel_Safety"],"blocked":[]},"status":"OK","errors":[]} +``` + +--- + +### 4) Gate block example — Unresolved clarifications + +**User** + +``` +/plan "Stack: TBD" +``` + +**Assistant** + +* `FEATURE_SPEC` contains: `[NEEDS CLARIFICATION: database? email provider?]` +* Constitution: rejects proceeding with unknowns that affect structure +* **STOP** with targeted questions and no artifact generation + +**REPORT** + +```json +{"command":"/plan","branch":"001-auth-magic-link","artifacts":[],"clarifications":["database?","email provider?"],"gates":{"passed":[],"blocked":["Constitution_Check","Unknowns_Remain"]},"status":"ERROR","errors":[{"code":"E_CONSTITUTION","cause":"Critical decisions unknown","remediation":["Choose DB and email provider","Re-run /plan"]}]} +``` + +```` + +```markdown +# faq.md + +# Spec Kit — FAQ + +## Concepts +**Q: What is Spec-Driven Development (SDD)?** +A: A workflow where executable specifications lead development. Specs, not code, are the primary artifact that generates and constrains implementation. + +**Q: Why use gates and a constitution?** +A: To enforce architectural integrity (simplicity, integration-first, test-first). The model must pass these checks or stop with remediation. + +**Q: What are `[NEEDS CLARIFICATION]` markers?** +A: Explicit flags for uncertainty. They prevent guessed requirements and force resolution before proceeding. + +--- + +## Commands & Phases +**Q: What do `/specify`, `/plan`, and `/tasks` do?** +A: `/specify` creates a feature branch + spec. `/plan` produces the plan and design artifacts and stops at plan step 7. `/tasks` outputs a TDD-first, dependency-ordered task list with `[P]` parallel hints. + +**Q: Why does `/plan` stop at step 7?** +A: Task generation belongs to the dedicated `/tasks` phase to keep concerns clean and reviewable. + +**Q: Can I run all phases at once?** +A: No. Each phase stops for review. That’s by design to catch errors early. + +--- + +## Files & Paths +**Q: Where are artifacts written?** +A: Under `/specs//`: `spec.md`, `plan.md`, `research.md`, `data-model.md`, `contracts/`, `quickstart.md`, `tasks.md`. + +**Q: Why absolute paths?** +A: To avoid ambiguity and mis-writes across tools and environments. + +--- + +## Templates & Constitution +**Q: Can I reorder headings or drop sections in templates?** +A: No. Headings and checklists are part of the control system that guides the LLM. + +**Q: How are constitutional violations handled?** +A: They must be documented with justification or blocked until the design is simplified. + +--- + +## Working with Agents +**Q: Which coding agents are supported?** +A: Works with ChatGPT, GitHub Copilot, Claude Code, and Gemini CLI. The outputs are plain files and checklists, so any capable LLM can follow them. + +**Q: How does parallel work `[P]` actually help?** +A: It highlights tasks that touch different files so separate workers or threads can safely split work. + +--- + +## Troubleshooting +**Q: `/plan` says spec missing.** +A: Run `/specify` first; ensure you’re on the feature branch. + +**Q: Tool returned non-JSON output.** +A: Treat as error, show the raw output, and retry after fixing the script/environment. + +**Q: I still have `[NEEDS CLARIFICATION]` after `/plan`.** +A: Answer the questions directly in the spec/plan, then re-run the phase. + +--- + +## Security & Safety +**Q: Can the agent install packages or run code?** +A: Not during these phases. The agent only manages text artifacts and scripts listed in this repo. + +**Q: Can it write outside the repo?** +A: No. All writes are constrained to repo-root and the current feature’s `/specs/…` directory. + +--- + +## Customization +**Q: How do I add project-specific principles?** +A: Extend the constitution and keep the gates strict. The agent will surface violations for review. + +**Q: How do I change the task ordering?** +A: Edit the tasks template rules, but keep TDD precedence and the parallel-safety constraint. \ No newline at end of file diff --git a/0-Docs-Yensy/Spec-kit Expert Agent/runbook.md b/0-Docs-Yensy/Spec-kit Expert Agent/runbook.md new file mode 100644 index 0000000000..84bf5848e6 --- /dev/null +++ b/0-Docs-Yensy/Spec-kit Expert Agent/runbook.md @@ -0,0 +1,114 @@ +# runbook.md + +## Overview +This runbook defines I/O contracts, gates, stop conditions, and recovery paths for the Spec Kit Expert Agent. Explain each concept to the users in a way that they can implement the execution and operations in their own terminal. + +--- + +## State Model +`IDLE` → `/specify` → `SPEC_READY` → `/plan` → `PLAN_READY` → `/tasks` → `TASKS_READY` + +Transitions require all **gates** for the current phase to pass and **clarifications** to be resolved. + +--- + +## Commands +These are the commands available to the users when interacting with the framework, explain how to use them in their terminal and what to expect from each one. +### `/specify ""` +**Input**: concise description of user outcomes and journeys. +**Actions**: +1. `create_feature` (JSON parse; absolute paths) +2. Write spec from template; preserve headings; add `[NEEDS CLARIFICATION]` where needed +**Artifacts**: +- `/specs//spec.md` +**Gates**: +- Spec completeness checklist contains no unresolved markers +**Stop Conditions**: +- Any `[NEEDS CLARIFICATION]` present → STOP with questions +- Script/JSON failure +**Errors & Remedies**: +- `E_CREATE_FEATURE/GIT`: initialize git, re-run +- `E_WRITE/FS`: verify permissions; ensure parent directories + +--- + +### `/plan ""` +**Input**: stack constraints, libraries, limits, non-functional requirements +**Actions**: +1. `setup_plan` +2. Read `FEATURE_SPEC` + `/memory/constitution.md` +3. Execute plan template (phases 0–1); **STOP at step 7** + - Generate: `research.md`, `data-model.md`, `contracts/`, `quickstart.md` +4. Update progress tracking and constitution checks in `plan.md` +**Artifacts**: +- `/specs//plan.md` +- `/specs//research.md` +- `/specs//data-model.md` +- `/specs//contracts/…` +- `/specs//quickstart.md` +**Gates**: +- No “ERROR” block in plan +- Constitution checks either fully pass or document justified exceptions +**Stop Conditions**: +- Unresolved clarifications +- Constitution violation w/o justification +**Errors & Remedies**: +- `E_PLAN/SPEC_MISSING`: create spec first via `/specify` +- `E_CONSTITUTION`: simplify approach or adjust design until passes + +--- + +### `/tasks ""` +**Input**: optional priorities/constraints; otherwise infer from plan & docs +**Actions**: +1. `get_paths`; read plan + optional docs (contracts, data-model, research, quickstart) +2. Generate `tasks.md`: + - Numbering: `T001`, `T002`, … + - Order: Setup → Tests → Models → Services → Endpoints → Polish + - Mark parallel-safe tasks with `[P]` + - Every task lists specific file paths it touches/creates +**Artifacts**: +- `/specs//tasks.md` +**Gates**: +- Each contract → a contract test task `[P]` +- Each user story → an integration test `[P]` +- No pair of `[P]` tasks modifies the same file +**Stop Conditions**: +- Missing core docs (plan) +- Conflicting dependencies +**Errors & Remedies**: +- `E_TASKS/NO_PLAN`: run `/plan` first +- `E_TASKS/PARALLEL_CONFLICT`: remove `[P]` or split files + +--- + +## Error Object (standard) +```json +{ + "code": "E_*", + "cause": "short explanation", + "remediation": ["actionable step 1", "actionable step 2"], + "where": "command|tool|file path", + "details": {} +} +```` + +--- + +## Final Line Protocol +Each command must end with a single-line JSON `REPORT` (machine-readable), then stop. + +--- + +## Rollback + +* Wrong branch: `git switch -` to previous; delete created feature directory if empty +* Wrong files written: `git restore --source=HEAD~1 -- ` (or `git checkout -- `) + +--- + +## Security & Safety +* Disallow path traversal (`..`) on all `fs.*` calls +* Never write outside repo root +* No network or package installation during these phases +* Do not execute code or tests; only author specs/plans/tasks \ No newline at end of file diff --git a/0-Docs-Yensy/Spec-kit Expert Agent/tools-and-guardrails.md b/0-Docs-Yensy/Spec-kit Expert Agent/tools-and-guardrails.md new file mode 100644 index 0000000000..66f743757b --- /dev/null +++ b/0-Docs-Yensy/Spec-kit Expert Agent/tools-and-guardrails.md @@ -0,0 +1,118 @@ +# tools-and-guardrails.md + +## Tools (LLM-facing contracts) + +### 1) create_feature +**Maps to**: `scripts/create-new-feature.sh --json ""` +**Input**: +```json +{ "description": "Short imperative feature description" } +```` + +**Success Output**: + +```json +{ "BRANCH_NAME":"001-login-flow","SPEC_FILE":"/abs/path/specs/001-login-flow/spec.md","FEATURE_NUM":"001" } +``` + +**Failure Modes**: + +* `E_CREATE_FEATURE/NO_DESC`: empty description +* `E_CREATE_FEATURE/GIT`: git missing or repo not initialized +* `E_CREATE_FEATURE/JSON`: non-JSON stdout + **Safety**: +* Non-destructive; creates a new branch and copies the spec template only. + +--- + +### 2) setup\_plan + +**Maps to**: `scripts/setup-plan.sh --json` +**Output**: + +```json +{ + "FEATURE_SPEC":"/abs/.../specs/001-login-flow/spec.md", + "IMPL_PLAN":"/abs/.../specs/001-login-flow/plan.md", + "SPECS_DIR":"/abs/.../specs/001-login-flow", + "BRANCH":"001-login-flow" +} +``` + +**Failure Modes**: + +* `E_PLAN/BRANCH`: not on a feature branch +* `E_PLAN/SPEC_MISSING`: `FEATURE_SPEC` does not exist +* `E_PLAN/JSON`: non-JSON stdout + +--- + +### 3) get\_paths + +**Maps to**: `scripts/get-feature-paths.sh` (read-only) +**Output Keys (all absolute)**: `REPO_ROOT, BRANCH, FEATURE_DIR, FEATURE_SPEC, IMPL_PLAN, TASKS` +**Failure Modes**: + +* `E_PATHS/BRANCH`: not on feature branch + +--- + +### 4) fs.read(path) + +Returns file text or error `{ code, cause }`. +**Guard**: Only allow paths under repo root. + +### 5) fs.write(path, content, mode="replace") + +Overwrites entire file; ensures parent directory exists. +**Guard**: Only within repo root; reject path traversal. + +### 6) json.parse(text) / json.stringify(obj) + +Strict JSON; on parse error, stop current phase with `E_JSON/PARSE`. + +--- + +## Guardrails (derived from repo methodology) + +* **Constitution gates** must pass or block with explicit justification. Record violations and STOP with remediation steps. +* **NEEDS CLARIFICATION** markers required for any ambiguity; do not silently assume defaults. +* **TDD ordering**: generate tests before implementation in `tasks.md`; contract and integration tests precede core tasks. +* **Parallelization rule**: mark `[P]` only when tasks do not touch the same files. If they would, make them sequential. +* **Absolute paths only** to avoid ambiguous file writes. +* **No external side effects**: no package installs, network calls, or code execution beyond listed scripts and file operations. +* **Stop-after-phase**: never chain `/specify → /plan → /tasks` in one run; the human must review at each gate. + +--- + +## Unsafe Patterns (block and explain) + +* Writing outside `/specs//…` or `/memory/…` +* Skipping constitution checks +* Removing or reordering template headings +* Collapsing `[NEEDS CLARIFICATION]` into guesses +* Creating parallel tasks that modify the same file +* Proceeding to implementation within `/plan` phase + +--- + +## Safe Patterns (encouraged) + +* Short, checklist-style summaries + final JSON `REPORT` +* Explicit dependency graphs in `tasks.md` +* Minimal diffs and exact file lists per task +* Visible, greppable markers: `GATE:`, `ERROR:`, `NEEDS CLARIFICATION:` + +## Software Development Best Practices +- **Spec-first & plan-reviewed:** Specs define scope. Plans gate implementation. No code before spec/plan gates pass. +- **TDD precedence:** Write/lock contract & integration tests before feature code. Tests must be deterministic and isolated. +- **Small batches:** Prefer short feature loops and minimal diffs. Decompose until parallel-safe (`[P]`) is clear. +- **Explicit contracts:** Every endpoint/service/model change updates contracts and acceptance criteria. +- **Version control discipline:** One branch per feature; atomic commits; meaningful messages; PRs reference specs. +- **Documentation as code:** Keep `spec.md`, `plan.md`, `tasks.md` current; corrections happen at the source files. +- **Dependency hygiene:** Pin versions; avoid needless frameworks; remove dead deps; verify licenses. +- **Configuration management:** No secrets in repo; use `.env.example`; document required vars. +- **Security baseline:** Least privilege; input validation; output encoding; authn/authz checks; audit logging where relevant. +- **Performance & reliability:** Measure before optimizing; capture SLOs; add basic health checks where applicable. +- **Observability:** Structured logs; minimal, actionable metrics; error taxonomies with remediation guidance. +- **CI/CD gates (conceptual):** Lint → Build → Test (unit/contract/integration) → Security scan → Docs check. \ No newline at end of file diff --git a/0-Docs-Yensy/Spec-kit Expert Agent/user-guide.md b/0-Docs-Yensy/Spec-kit Expert Agent/user-guide.md new file mode 100644 index 0000000000..02a6c8631d --- /dev/null +++ b/0-Docs-Yensy/Spec-kit Expert Agent/user-guide.md @@ -0,0 +1,109 @@ +# user-guide.md + +# Spec Kit — Beginner’s Guide (Step-by-Step) + +Welcome! This guide shows non-coders and coders alike how to drive projects with Spec-Driven Development using the Spec Kit Expert Agent. + +--- + +## 1) Install the CLI +Open a terminal and run: +```bash +uvx --from git+https://github.com/github/spec-kit.git specify init +```` + +This sets up the workspace, scripts, and templates. + +**Optional (nice to have)** + +* Install Git +* Set up an AI coding assistant (GitHub Copilot / Claude Code / Gemini CLI) + +--- + +## 2) Open Your Project + +Open the folder in your editor (VS Code works great). You’ll see: + +* `scripts/` → helper scripts +* `templates/` → spec/plan/tasks templates +* `memory/` → constitution and checklist +* `specs/` → feature branches and artifacts appear here as you work + +--- + +## 3) Create Your First Feature (`/specify`) + +Describe the feature in plain language—focus on **what** and **why**: + +```text +/specify "Authenticated login with magic link; journeys: sign-in/out; edge cases: expired links, device changes" +``` + +What happens: + +* A new feature branch is created (e.g., `001-auth-magic-link`) +* A spec file appears under `specs/001-auth-magic-link/spec.md` +* Any unknowns are flagged as `[NEEDS CLARIFICATION: …]` + +**Review the spec** and answer any `[NEEDS CLARIFICATION]` items directly in the file. + +--- + +## 4) Plan the Implementation (`/plan`) + +Provide concrete constraints and decisions: + +```text +/plan "Postgres; SES for email; 1-hour session TTL; throttle: 3 links/hour per user; CLI diagnostics" +``` + +What happens: + +* The plan is written to `specs//plan.md` +* Design artifacts are generated: + + * `research.md`, `data-model.md`, `contracts/`, `quickstart.md` +* Constitution checks run; the plan **stops** for review + +**Review the artifacts**. If any issues or questions remain, fix or clarify before moving on. + +--- + +## 5) Break Work Into Tasks (`/tasks`) + +Create the task list: + +```text +/tasks "Prefer library-first; structured JSON logs" +``` + +What happens: + +* `specs//tasks.md` is generated +* Tasks are numbered (`T001…`), dependency-ordered, and mark safe parallel blocks with `[P]` +* Tests come first (TDD), then implementation, then polish + +--- + +## 6) Implement (Outside This Agent) + +Now engineers (or toolchains) pick tasks from `tasks.md` and implement them in code, using the contracts and tests. Keep your spec and plan in sync as you learn—update them, then regenerate tasks if needed. + +--- + +## Tips + +* Keep features small; shorter loops = faster learning. +* Answer `[NEEDS CLARIFICATION]` quickly to unblock progress. +* Prefer simplicity over cleverness; pass constitution gates first. +* Use absolute paths in discussions to avoid confusion. + +--- + +## Quick Reference + +* Start: `/specify "…"`, review `spec.md` +* Design: `/plan "…"`, review `plan.md` + supporting docs +* Tasks: `/tasks "…"`, review `tasks.md` for order and `[P]` +* Always stop after each phase to review before proceeding. \ No newline at end of file diff --git a/0-Docs-Yensy/Strategic Analysis of Next-Gen Agentic Frameworks.pdf b/0-Docs-Yensy/Strategic Analysis of Next-Gen Agentic Frameworks.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d8c65edf5666129847f6300f20b13167a8a880eb GIT binary patch literal 224099 zcma&MQ*b6+6s8;7wmS9~n;ms*Ctqya>e#m3v2EM7ZF~MXbE;-eotwGa7pvB;T5r|f zRnN016n={{02n#pC~k98ir_d%m`UsmE#dh1n8YotolP7`n8d9OoK1e47}*({Fv*zM znmL=3aB^_73JAbCIXjvd*uc53SMiU<7>_u-yhrfh?;2ghGvo9IA|ygsN8FDF%Dm3% zW|bJQ!Nv)^z7WP+9p3Aijui?kCo8rM62)8H@do+nJG{m|?SH=>J#R!4szKYoq4d7( ztT26kKm2UEzlQ8^EAKHajqNU0(utgCB%RML?*#L6C4PQ?oPZ4b-QLx-=$}mGaXM+3 zZe?$XN?K75634*1_%WgMAyIaAimt)X)lLS8P}81?DzZ@C#Nwaaj-_|Rh1zcdu`ijk z9RA{*ylxRMYnjwt(mP)v%@8gWf3}_txSPlZ2#GSZwZorkYwL|~5)Oma*h1uGB{T*y z_qq_^GW(M)ObUVHEbt!GN?c!B(29+3n;%F=j`ViFZ1`<08bG4B zL8CmtabuvhmSfTR*I`snJyP3 zB|!xI`i;NKA<_uez6U?tL~7DkOoK?|58>3`K_WOs=uC<v>X@g!W%WQreWKjsju~e+dan)~c zc8TZ_MIUnm(8Ei3T!^1+y~2i3 zy%tsE0C5r#8fHmT8^3x?nd0H%PWR*-;? zo*RMnj;mpJk0>qrqR?9bpjlw<0@rhw|4J1}O_cEBh5bm;xzm z#(-A}$RkYq=ikK&-`=E{+5cY)R4hY@XQ* zN*yUmi#-lh$I~{3Ni!s91S?X(%k<|?8^tjP(}HnS9fdVBnbpA23n&RxQMo95`YazB|7$$9nXil~Quwde9c(QDq?aN%D4-a&mj!zZ^pK1NGmjrx zjtFxkUpAP8MA%4(J$;r14{lI2D1tnwn#>i+5ZyduzVCyUP<%oxW|~XY5912CT@DfA z^(NgGWU?U9_!OGUJo;oeMPXUoU=CnF#>DWuwCwj7EhaT3NbeF90=XocQ=!RnP#Rtc z@D?oZnn(b=1z{exKKKn!5Ew)Ak8w25f-F=L5b9q3<3fv zaM&A?tfk+-k2wu$1FAe=0c_6P*$PK^*1uqBDWMTIT|pcf?E$GKj+F$7cu}18mlFVj z5WHOYjc8FBrqXuKN=Omr5U&huMNwK5%3sRN5fcv#y+i#o9eBnS9a)b~Z6Dkx* z^(Yj?zrPkh8N$%&9cxccA6V*$1}tzAB7t6zfxgIO$zp9mqOeB(!>hZRDl~$&SaIm2 zt>R$;QZbzQ(7~(1xM&e^3HbSQ@AS3k$~Ooe5-?H!j2uB-4JqEO=;5G&1Z>80L>X_q}$J9s(tyyN-y+MZk9uHL$sq z)PezSsDDOaK(K22jD!qm*1=WeQTL-ixN#tJ=WrldtxFE?RK~q{EX!QTrnCmxq#@xN zq8EAF2 z5UX{|zq^z2iZG*cLccqBbvk=l+6Oy=KnRy;++9w3?PznxZ;BBmqyqIwXt?ii zF#V6>d|-n2W(p89l|rz%WRA+lXsThs z9$1M?1?xijY-87UNU0YYEXwoH{_Y|sG9kTo%_0l_VyNUP?x-e5@o%;P6E!SX$u-QO*Oz8|S}KL`!eAEhlDvBWrOkU`u6pJ%aw z!kXn8YDnLDyEmYI3ZYWN5WXWugilbp#H~@-7pE!`@YEl#nufaAA4@fL`XGQiw2zT) z$DWAZ{#S#|*dLFdM_uW-UgIj1zvM7G`7@)nOsEv2D(UZ0=F{zqtx&@bcmaIx$4on) zw^zAB*sQS-^CN=3udm4vR!#|@Gu}dIyYOG6dtVuEb&7(&qMauqsGkS6Io6?bsxB09 zF`)Pp=-t*o{$|2+*+r!Wqntko9l+y0m^e-P48UExZ^$wzSRwm&mrBR>liftd~7%&?Id7<6r*2c63oryfur#8rIbaov316t>g z>94OVHAo6rN6F=b(L1pwQ!FI}eYuXXfTs3C6LCM~zk^-FFUpqoodgjk^>J-M?ra-j z&GK1emec94JO@)oGF>bd-)J7Z=dcQ6M)iyeyQL3+DqdSBF>>pMmd?|t1cK0;l1XrW!lumOe0*1{!@go>?_Bz~dpg2}f;-=L8#g}( z`sM1`r?woyefv#);Xx@grzZJzqu6B7J8_xbV~;nd^7HKSk4tlv=N5!nINcA~dpFP% zBs^y^!^KB?Z5YJot8D|btH$#6mY?ZSpQ{#e`zmADTw^q13=g@kJQI{9<)c{9feoq* z;H+w8@nM=#_!TiS?3W~uIK ztqXi^qQ9eg>LD7?AL5t^?WRP{1VvmJBv8e6$-Eq6y}S#ZKE@jYHd0mb>v|}%mBwxa zXz9zw4hjt^Bs2|Yc_#RabYqChHBFBWBIm9D=rl6rS~05AXG!YZ{V#QIXOk)af2 zI|G!7_CHnfDG47htt*w9YcUl8uX0cpzpkUA5?sxKvQ;g!pu#6SN}QLyWU@^4)0V#; z6$?)jdiu9!xt8Q3(MI%!> zXCNY<&MpH`Xt)9#foRf^&JArv{pcLb!cU!~90d8sC6s5PzN#a7B?_a&^5;EjGYWhb z&tx@;#mWAq!$C~gbS_ux2&Pz*1eH<@j;4L?Co_20YZ(J#nCoZs>sZ%{R2xbRuz{h7 zz&HnasU8H9v>$5CC&SGaL&PI8wdIa@$O4MjjqGtkDE2qYB!${kUj_uua)O)_-EanX zQqz`%J3?-ZpE^a&&LP3E2-a2e$1>K${bUuXP;3N5^h-h>y^TTM-=p#A0QP#@(-3=;F}c9nhFH2V`vbO&&#k3G2L+XWhNz zoEI#;GOAx_a#L?xyH%CB6Z!qWYF0r~-L><^17!1}30}hqUVoho7b$nFvE{j0fk92QPF4wxzO=?JZ{Q#BOW|PQKhi<|K`_DiGg3<#xY)BmaDI z?wbWpu+YQ-753=-_#8N*5fLtWYnQE*E9#}R`_`hqU;503A&N2;xU83xG zvOWRpqY1`(W@yd;SE(qRpuCvfuSH8AnYLF**qmVByXci)p700)z}qGwau-#Uh8 z%DIhN+@l@zC&>D`xoI$wf_puGyPD~9Q^u_LM4>N=`6x5c zQF(mL4O{z&6()-PreQRv)zMqL;K+PXjO5eHWm|%hX`q`cPtFfLG{&$u&&25Zo2Evln(H|(G*9v3MakmKt;v&j8g&s$ zjb{3CVHT19x+R`?0b8>+$`|`@{AY(?3lG8R?zarRwQac$Lrib-tZbn^pcp8BRCqhCQqKr!kSp`0sItTknF*S#yrhh5Uoi&oMSp- zG|fgA#XikN#E3cuJ8uBQ_+J|Xp0yEM$yYd>a?_nm;sqPcftzUT@~6I6!AC`lJf#Z&;J;F1#%yNL z!PyesQ7~qou{vmH?ZXW zcP^*AOf(_JN1>KvQ{Z&WW}wfZ?{HDSmG0Bv%o`EH(%bi-=G~~-qkgry=H5v1$tSaL zdPTE89X+f{w%XWaSJHS5MZ z?bPA^vt-Z!G{?*tRz{^RwId9t?l8|<5mH;fam8)DuamgU5^KSM;^T#HPKQTxZ@F;= zuTf0u663~f%aiAm55|uB*2qHW8Pf;vTHJb{LFo3kOUcFijEyYg;p-yhtw>E~i!O&d z>jZl?aOwI!xVATYW=cxVFUhEUQNg&;F+>v8d$HcS9jWLl?&Q-4j>U=BEQ^MFa1f@*Dq1L4N0VfNx#V%? z=}oG&Tdf0f-RI-*L)+&ftNh)T|DTUno?UUKdh@$o=?Y5qv@)N>ouR7TaIQdf=E~&t zmQKx7u^8HYjLc4=`#YKV4!E@IK<0u9YgDOvMivKed-}WeiDWhIo-px|=Hk*}*e87Y z-K~o@Bj>xFK3>N)GP3Nbqpic1-G}7{mi&E6n(N?!^@FpnU2R}Rd#Rl;!+MpqMS#8* zLRZO4uugh?<|Ciz$L>>jmri5iBX?f?+0W4}t@ILX3mQ1%x{kmtKK;f&#wSmFDun17 zkNg~+C-}>V?Vt(ug^Xa=Zrc?`ma2<|;HGnMY@2oXP;KWd!9SgOW(A7cTpVj-h6p>^ zd<|y!HIcr0@0lo(?+F4GQk0u^-22wIZd?}4I1h9B>-5rLw(UdfU561b8U!-hT35OB z%6AQ-u<)O9#Nk<*dDz*I97-$w%}kZYkIBL4@`4l}Sa;#?ajM9r7}X!{*S#wRH49lT zTg^?QLtH_j8jrHaNN?eB4?)sMMHj{Jf|O)x4=~flU1eRp`>F(yExPIu`5hYr#x9i( zSE=R2eeyGB^w>xo1A6EBkDku8L-l1qq)kRTVx)Kn3hry%uloUESnEW5j;zl2(DmwEp&H!hqz zD%{e!53Un@G95uM2(doemo?g_z)h}A{tGS0<`5`<2-Mbl1C5DoN8>g=5y_7xSPdt@ zNe(Jwc?LH-`RsO|96gViC{9iDfB>{DQ7!C2dH8152ug|$)}K+F^6w^k{NkroWLb0N zKd8U5PksA$&Bb~iyP|VY4wJ())%nrBWmMyL-+crY8_g3^Imfv%>&0jDu*JSDssh`G z?guJksqg3b2VHfNcKiWJ&8xO->&?R^c2gD$(Y^IUvAL+4C(|ZYZ&97bkz*qd`)Nbn zu;!xvxa=D&w&nWxTn@h}+-a_haQz?2D$-BNM%5!t7CXN%QTM`)L<_&~(ulJBhTW}k zD`soij=&n_1b5W;NbFy}Ec8F=(+So3JC&Id@T{l4>ZM;pZRy-}8|e*~cCQ+a3o=P7 z1pYDgkNSGx=18gt6~O|Z%e9GHc~tTwblpFR_~0yCRW*AbcSjG2p4dK*J;&-QE!^>3 z782OY=epzhIp)tfGZvTCATduw*pGE*v4fLuy-Xe|EoXWgJBnI5OgLw@xxqMRXEV^b zbITd_IbEMnKN#c@d|UKJ*R|rIFRr)1JCKk|)i6=&t-!nFS8r}a7PV>(WVTQkc2b6% zfF1l=;H$swX#rBm4D3)Jj3MN!`6%`7OWNK?H@r8Y1x^$QO*iYU7d#_*Vjr!O>8H=; zx910@U*RLj4D{6X0kmZN8A&nCcUD#R&o}p@z3u_SC)TOm;ffG40m-)u4VRoyZ$MxL zXyE2v6tkJeeCV#x*G40U4PL2QVoX#k5;xs0a*C1eEsd@|Ipf1+Tj#J%RbuR%-QkO#($ zI}yw!8fK9DGg%lT0MMQmV6qPc?xfbfEX)6z2GE({9O!x)C<|366nKO1x$RFkW?Va- zh3l8AQew&mc#%#@P9hxCjN;Sa&FuIobr1> z%$zn{-dyMq-s)Z7^JXEI{p%{1$t-k5(9i2_Vg);0+V?y5V<73D7?M+ax*z@b%{q3m%<(Tnr^4-YDj_Bux-VX=mH($5+_x)IhO=|V` z$*-i@I$h%3*j3%39y@H>gA$TuU&Z|gvAv@A6q*@frx$RQY3P%CzIpkKinb}?sUbKc z^fW4P!BuB{yxYEvI9Mujo6BcjbPO5^h=b zkry~SUDc>tvn%%;3N1Vp{bnOGA;E4drd-dypF2Yqx$8uQby!=6nwFYN*RUrqbE_=f ziK5lgnAN814jlfjoCTx_=gIf;yDI`V!~80R2=cfz99YtKP26Mj^5^5W!UI1l{ne8J zKF|^46t5qNw-8FTS+^%rcP5@gg z?wRiZ-ZcwHqO(N0l{JToQmyUs6>czD; zg5THENzcz`Ztw8apM5r^hdu3>*s<9>rKRLEsoKz5Az;WC)VRHc^$I{5OPaR__E)yT zU;b!#5-c@y>&BTi|Eg!HpGJv0ZdQX}&EAWDIo;0ab9Qg^Z_k%#qTqf4A(ayH-{DpW zjsZ*_$Y$S_mH2=V!E`P~icM@ETXokUXeo}?ijaa}38`MoC&N^g5YB+&&BS!3Up0+d zr#dv?N7*vT(q&k2#*xK2w5W%=qt| ze_7G6*`{>p8rQ9Z%ISm-wr)4PYg=g4PrS@H6K|)HJ~sm35+vEBLt76vJD%V1uAqpu z@TnNP-ctuO8;Aa9dlGY)pC0{g^X;Gp4l+B2I0w&RB4x?}uD}F^G3%_WGdFulq91`^ z5mhO9Qq;f5gF-Mf>CG(@rd)TX*g4wZ_NUo+2VSrijZQQ%?j3rozJ~7*r;l+Sd!l8@ ze<-Blz&kAFZ8#!ZZCudbFftbr=@Hc_+N8bW9*+kyWtk2y*)aBSHCEcvST>5GaAb#4Ot~E(m{t9Jn+1D75gY{~!B4ac*)HJvVu19@ zF1e*&=e6EKgdRL^$iv41CYl=#z1JkFn>yNst<6vdIF;MB9WUeD#+qrer@F0<0%z6E z`p!-NegrJwfcJQKa&5rD93TTyT#Ee&;oo3yvrsEkjvYbuCwp~TnsA9USsg{gu!%%1 zA&pqALbm4W8ed)jh)pAL5yy6-2M5&dB!PY!{lVa(levi_Z`h>@>vuh%Ob8#9U&0~@ zu>muQE^3L3g@u@UeGhCkqNROf>Sc*S7BFClw!3;eucVF5vDa^VXG>FVCW!o1AtNDkGsf9dE-bNf9rXB|(JjABG%IN@i zcK#au4wUL6!oU3hyM17R{R%1GgUpE3%%3H4siesGL^FNh4(8N1VCTCrDAK`b82gwS zb#)%cMGGf>5~VT1yEiTTh3-umKH4%qZ(J-p0*_Gauv2%%7c3@G(3cR-{)U5{E2DQ9 zYd7#E+Df<)Xf`+$a5>h$X|M^H!8dgWhWU&RSdwPDu>LLvC=o%#-=n4O|GJv}&l0-) z$-x@jMfA|%O?Z{+v7YI4FkQpTrY%qG&M1PGwni?qYzeENUPmU-m#1QyRitibzUEEr zls>2AnqC-}B2Vj5DOa`JaLad#4UTnCut8Ki)bQkKG2vExV%Kd2W#9H@>#pX+txWyP zbJ4pR%PadV^o+~F4haLQE4PpM%DoAT!ehTWX)eGtgn_IPHP`229)HtnUYNs2m_}hU z+WVHlANU>|S!F=DNDLiT>)=%3aN2@Y(+;VQ(ER~qkcIwHYSWkC@Q0i&)ZRa3pPz`X zN?vY_4R7p@S7E0uyLDB@t(f_%j7s(;nQ6t4Y#^w|4Wry%(6^bC+_;)JY`#fG4#SXU zR*8laWFif!&E}Rz&xK9n3@vx?e2`{lJlEpXRMjhBHb0tSc~}d16TNfS&pJd$vXwJc z)K@k^grGphzLiF{28BMKay4>WWS{L^I5(Kdm@l0Q?pB&07v}cRm^>TEn~*hmG#Nt< zh?s4pF7wyu#>YXC(`s-!hx!(})W6+jTXkfRauYHWht^!6Ppt(P%%P3C9QEw?cU;gK zMQIPJ82VG}njVi^VGe^=Ea8;@ zL*DLTGXNVC5XY7^uVwu{i*$ZuuNd&YS)Y3o`~EBNzt;`ejo7i6hBfXKOrWQUGA?;8s}Q|-o& z9>&U06Zh5FE5%5M3;o+VMd2!02ht%*2kupK-wZg~ch@@Ct*90_MJNp71>gdKn|^a>r) zB6wto=(7Y)?Pby%r6tr$pLHm+^R@n+2V>L$;lGI`cpBR*>)8)b(#*C3Yz@Ne#60P>Elf%xQ$D6Pa49}%t_p4|4XzHnM5T6weL(La z0DY2EXO(?;y(|C|ZUT~+xQ$T^8q9J{k{BEd{`SWTmG>?P5`wZSRak2E4W*$0aGh48 z<(1@V_S{GX`>mJ`Qf8}KuOpwZauiD$z4pvK!+2iB-pz>IkpgbAYfFx3VSXJEFh=_k zT`~dXq^ir%JHac8KE2Sir1PJ$`Mg3dZ#3u-X+c z_y_m~HBR2mi5*nJwfI`UnkMj<^)zDvV_8Fm#|al5-U;ePG0m|ZePdMI#-K}u*Ob!; zA3!5c^RJy2-I<&(xur>i;I?0cPqS%elSR?sB|)Z5_S#1~k-YJ31%aRdPRlMvm^46M~)k}oy(Dr)nu%OY@r0ZJ$2STScls%8sXCuqs3KBEmJ=9 zgcn|MN7(9kVo4=VT~azNuN0v^|y0qwz*+Q3F%$$e!Xj42~|;;a}BdQBXW z-Uz?Wh~YW>^2Ml8j2Bx$&GCNp<>YVmYzUG7>u%=RE)<=2uujIQ4LqyB+s608hyB-E z7GGeaPHD=pCZ(`G*Jho$a93`h3Fr~GXn;N)j>|;br_N*s5iw2xkb;@$xAq9f5Wy~g zrNhhG&_AtEPUF7CyR6tEU#kPNN|H>lNo81 zVq3%18UAyu1)~2fTst%yc+FrxR(E6Bb`ww=;C0Pw*!k00`AvVlZA6_6`FrGFU_d@% z%Q?Fu)gRg;D>73Iibf#)ezQB|598)4WD3zSK`sP@=^Ao8$U!@3j#w)^%JzG_JXam< zfgpCH7+{xldmHt*=|Jwwxoy(`o@5p$&O=2&gTlT0GeZznL-%7%Qg#tBB3cY+I%kHS za8&ZtG z#h?)-!2PkW&jPsWz{}p6d@3V0o5BJRHh45vJ=2l9^vvOA+D-r*9!~J4ktjr$ahN-q z-erkcoe>nhce1&$x4Lh|+7YP+_Lpr8w-OOt%VnwP9_M~}Q4nSEAk+pAiLUp^%nPfS zm8gzjoH*XWz>)QVhl~y_Ff{7+5aBy**(bimO@WjxgDM$A0M+oY`%M=jn8N?%bi#`d z>0Q#whz1iV>dSQNSia~ZauRB}l|7ret$T>GhpFGOx3>NQTbOd+7fn24ZHAwALXvV_ zX*r_*^HVf656T=u<+{?!bipzO>?H+Sa9M+WnCCh(wJjW%&y!XU;rO+EauBT`>uTpz z{(?i?mGMxWN_5ctbeF3p6Ph8kS2V_c#LAZF+E7zC>L&}b;)^=kK{>k zHX}@9l8a}ToSB!eHMQB@yMN2#He!_-Z{ zI0P*uNW<;@>Wwhc>TATq$+*oK(no6Zn6-&heTYT*1y;^EwR}Jbi7?FdA1oUSzB!mv z)cr?2EOIbp{E3dN2MrQXuasdQ3Mq;Hyu#Fo_oU5mn6|J0EM2J|f99}n45v@Nm`?0k zz0pduFMM*yFls1nneNahOcHo$)ll`X0T;~;eO#+Q%RLLq zbe3#K>mGxg`4nR~Nk)5ic-}ptJdSN}!n^t$$G~fk16o`kqPnVkhdFxf&GRIB7V&!y z<}-yxEwhp@s1Hgmv`;Ats#oN0WXuDs*|Sf+a^5mP>bFV{Zt#ELjV^qaU}MB*?q+H2 z?c46s-*)j}KTRY=1=1ilkupgtE+)+~s2WRLijEp{7kn4rkMP#LLSm&qjh>4VT;#vo zbt2p0ze%@2dTxfc_rRir@eW)zvt@6hg%m={bii^nxAU>;}jFxc$;pR)NxcxV5@pd%$(=I`|s!<8-9be;>n7n!|Hr zePGm3I>C{aohsXy_4M!_Y)wxnBONXt`8j#edbc#QAiQvxH*}!ruNe4YPXrnpjB{+$SbXubkg-61VOT z8@<`lcmC|M@b%;FRutxq&TP6ndgCc9Y%sPc+__wP`0nTEDKz!+ewzp`Kx=45sQ{;o zc4Ld4C%Cip^3FsS&ZiJXVC%ngoVsaklfgx)nB05y@_QSZ_z^#rkS%vb7i<4In%QBF zN1)xRXsq$`6$C_i@#*=7`+d8=onh%_tn7T_juAps=Z5_-=?4tdd|^>gp>d30li(Is z25gH_7i)Hh%>?sD#3fe3a1TYqIYq&=W$#g0LrC|t_Y@wt|MS<-^D`D(%+?83dLawRGHnZ}I?<{8+*kw#gVrz47yC#N%uhqFBnL z?fUV{Dgj3a^d6=~3`tr`+If@1Fxg*+RCFyAb{y8w{~p z1i-4s$OK2v!7-nSWF>Rx(M@7KL^&pbWXdpqPCP}!$QEX0vtpW#yHc9YW(MUEZ!}#$ z2JR+D&xmP@X3v2swh4Es%v25+JpMuTSmeNejZAZwvC$&wQo@%4l81RS#4Tdn3t8qO z3YarUq44|M+m789bxIM!K#!R}eU#Er*hgR&T1Qy>4=3xovar0eYQ650oE!!m`wtQ6 zWaiYYf@vf}8uCyXkybuqGAG`_3{}y3d-IqBEQAaqGDT*m!1 zOpr!)%z|N+4uUOK4`>YT9aYn6O~=6?!*CdyR%))8RPf;%)>_xUZ_|tMd^*@gA5(w8 zPif$<|Nn%Sh57%A@N%%Qas7V@uXYV(i_Oi6de#XT@3Jndf1OYe#OQIp#ky<&$LWCE z@b{;oAo<&m&`ANjlwwkM(?#%A0}qB&e7geq(A>@W>w^^WPk5%sj-SWJN2XRmPsRkY z`oq^rN2uQ7hy0Is2gvr%-NMFAclTM87@gZ^2SXq9!A{Tj{qq*_&-+M^_uGq`&32E# z&i8Yd(zz(jkHR?NkK4zc9hcwt=hun6y2PtIU*FXm{L2^O>D1kg=jSKicQksow@gxu z-1loR^2-brSWodYv*=cCFDr)2a7I~8Vr9n3SB+|7zda-DJ~wxWw5P9|7(PZeAnuule;jLMjI=}OJLDkfI{))zUj(8iN*93S zsr1Lr!YR_82bm|=Uu#QyiXw`?s(baKGQs`VD&`82z07zccnTvu)fq99^-9tEz{-P4 z?TO&c74isa-qL$@m0qWtf$o1vuxc?>Ajv_lem~6FVqu$i%r%Q-n($Kg<2h7J)PCSw zyU`8mZggoy{b{8WL#9^yw!H8~9t00*f{T2rm8CFGTYI#++8u@6q(pA4S`+e~z zMB|LDL^jXW!AzNE20d!jOKTN5*z)7qr2^GT&+0cH(JEO12_|i8M<7&JrcRjcjMA%c zC#dEU4={~ECa~0jCa|wT6KFBe)pAasCXtO>1jcaA#V}fX2til&1^LfBo15_&o*-9} z$hBQDL<$fIhDTdF;8AYL*ba2H-vXS`6Q*#w#|oGGEIkbAR;I^=>K#r?_%AjUTN$FE ze% zb3*H}h;1U+5w)1p|4)r2Q(-6uL*D2Z{sW>q?|e{yy^?H)pegcfkcn12k+%dg(K%@q zzhqstauM{xTu?wgk85bj);Z!isp8)%N#s1jGtlPLInfAJrOwWeiY+{K4^;IJ6Qxk& z+?$hxFEyjxXZKZS<&NtRp6r{Wg2ZZ4-ZjNIODe?BiKcq95h1hOG0vXJv7xJVP&qds z6ntxo&T22Bf+*bGC$AeXqAfSV$W-;4XGVuk8PQpRqyELd;hZ4p-TvoGugz}4>&kDQ zB>ebQVjd_RB`H)n*SgExE$&Tc?W8->2O9{l{wxkOr!~$*=w63tRz?jkrY_}@Ib!@+ zm%Z7HIqkn!BV@c9>lijIBf{Ewu?tHrRU89E@Hma3Fb+Y_53cF8DiNp(m7hz?gwa$Y z-LVykJLVny)gZY4{Y+J;`_)%2e1Zr6JN6G0@QToN-*HQRm^oLks-}YMXp7+gm93Aq zb&7j24toXk)?CoAr-E#UYW1H^rT;m=>OyE}lS~O@YA~s~dn_c7CRM%N;|IiNq6DV? zA={bEcz%w1BGmgF7SNA?mTgVE)iYkuT*A18kBdt^t~@#d-d)HR7}UBX``W!$-|~-@7aEL}YFfw|o75RbPp*%?Xj2w53Nc(3tR2{HxEn=!I;IoI;qDz2 z@tMUD5iOSEuJ$w9t>=oU=sJs4Q;}~Qm0@(~gt}J*$Gjf7{=LxUaHyN2t21)rAMr(0MrdjCX{N+H~y6!{AWHGb=wR1fX(d;=e&>r53vzy<5P6r zDZ`e@qWo|E_)zJFz7x7;jWL;#;<>*aroq%l=L}%Pxk5^S2DV$z@d3gk<|7XLU_olK z>~>A>9>EC01aqFcLbMH>3<>3ia6v18rbzg&XYQ%~w1CxHVr~{*ACsI{k66LjvoS4T z)p^=TV&E^#p`=wk;kW@UGHWUOBiQSdxC9~o9D^nMoVD|2_JU*O_850AHckEdc$=y_P)&SC zzsgF|D(9#0SYj)IKh3X2-L%CHug%n8=dzabuzcm${2?Hs;3Z{33PlCPgad* z?596LL^l~hYW+GtxLaLp5*U0wkqb^`W(nLB58W@*`ZuFmQ|JB`Hj%?#!p*7=Z#VOm zktQjBbnj_&knz*|b54x)c%8O5YS}N1?78rrz`~_1oMtk3sPa!4T`dd3%^9VMj>Uqx z&)vsi^Q`}+_lzeA(L0e`yKbUHZ4ou7C$V+7Q7}?GIgmI z&BBx;uwRK7#Fh;lb=zQf$P4GU%rlb&mQl@QP{g{esRNEQ>#Y2H zp;V3C96T5Dk`o2LD>2tanv*Mwyou~FknNGt>!6#yBlYQjh9=94O%NRCN(M%j|7?M8 zVYf%?mC@B>VOpU#4p>iDku+w;@YaZrF#wPkDfp`rqP1^t^8oE!Y6%`$X%ZVKb4Wc> zZ%4nO!u&;)&|(zG^ui!Cz-YAS%a+kw~P$z7--7lBRm(Y zJ8XwNvwLm#EqOKZy4eXBFU=#f3>ld9Vad1aB5uWVtgAFcJJiX}rl6zFIxIkBR_C`YVZjTQfiH z#(7|nUI3f+Cl3LQM_-YqoXvXtH9qJBAPTbbq0mOYrJ0yho0}-1xWev76`RFhS2f5S z=&NZWbo;h;SD-0jcRb{9gvL4+r9oi#V7~k&=#MN_++8B%GO33v-{fh+O&q;qnVT z6&3=)yUkYI_yE|Sw7wNl1?{aheW&PMQvG_6wnTt{e$w8u=1$-%IT$X&X2=q?8LhLS z-0~PZSl#i~}AUgSA_CXwV@m-jntg7z8eEd6Mf-vtEHJQt3 zdGC+i8&sC5yg_yv}iflw3Lv=akLLnqNx*M44X9$3t-b(#jqhvusr+s-6RvV8tQR z@>{30X`r2~2;_4r+Kpe^4sO5N*rPHVIHg=K^sb#|z?zCJtf5~a2S>JYiRJ>g-Nz^3 z+G$8DZbUp}B%Q?#;g<*OpzmRDi;U3-Ac^H{RtnGy0AL;4w8F%`G{O4FsAA&mD%_Uv zlxEU*?EeqO&LKwApi$e?p0+V<+qP|6)3)9Hwr$(CZQHhO8~=P~b^hdAoTN5SQj1zV zRY_epiYzUyW+?6T;)oMf=?2UIPAh?SN7i495kqox(eS0AzV3#;`ei{c6xoh z-hUaTn{l)wFm0;TZZ0pV`ThiBP(8iIT2CLC5uKp4<%@Ck6keS1BU*Ds)<;+~GDFOv zmssg#sv-Ne96d6;@eA7XHcBJU=x&vp#mw~jlzB35HunFW0s0w7=JhLWNbFuwJ`gzq zvmsM3UT~9_gDP=33-fSjgb*6tt*r<%%#%zdJ!H?2Or|(5!h7j-Z@Yy8`mFvPXG4y6 zC#W)G5b_efY*uZajt7W+dsq<$^m$(z#m~9$yTW$G_d%nZ-|Mj}45cGl3xR>_7`uu5 zc>yCb0YobjsYaQONMnlD@dQSrqdcwal$oF zVst%0R6u+{1r!Y6kWlE4hy;6G(@X0&hol!0rG0g%B#k|HQNzph)Hczk4rMl3UO{)AI=en$o=ud;l=9%F8HYUyx&s}iTP9W= zot(M~y|RE@w;#%se?$r+Q+A1iePtL5SDO~~XE=szJ)fxo z>PPi4mAbq+K0Q?KveMBz5m7otJX8{I70rOFzUMi#%)FyMz&JMj1otqY#DINVk3f+* zPnu|oefKq?=+%d?1*+6Pya!T}y{IWgm8t1U_oP*mW|athFLx72&L?lK!K+V;5lQ0+ zIk{==+iHv6HWZm0&8m|TgIWR8J;yQK`K$*i?qCc^|Lc>u#9_G*!vqY}5xWOG)5N<& zc)##QQa+P2lUGp|Qt(<9n`#(|=@JnSPnQ7uH7@-j)ljZmN(CWGFY`i_bv>Gp( z@_xWs1n^W%AQB%-^p4Yj;YnS-7?^|zNnxL>Ww#f#ua2M|EF2T3_t;yl`oZ!PvIe7+ zO}X^s#63bnX}XAGrZNLNGDXX0ewZbl#}1{4dYd--)184rX>q1KRoO4Rej}94%9yxp zr*MfL=vd9lK|-ao(59#hLzc}p3LwmNv)|Xfp!}MVQ;)^mY}@}z7O+>Z6_K)8TUbU@ zRtr$XTXjjGits6H{iv+t*Cf#7pa@iFNU~&$) zO)nYWAnmi8{vK6Gg037oPUPMaEo^BD6NZyA8J3vlZ{o;=5;Rx`$47RhW+5YC86x*c z@sdzjIn0zbR8OCq2rnpH%SzI;L53%1_8fvdwn{&!0~zwX@zXL9Y$XZ2rS^*e0_JGT zRkZ3$|Hag@yXD8xX(5EPwp(%0%t_uCb%cutIN#d&VjBOy;pE-bb z$i@$amtK($6vnzBxp$PwU3?R~Dxzd&v}l~A=~+0Nb$jfvCk-Ps; z9N3n0z~EW1H?b3NueO4a|0dpLxLp_%FRL(AVq$*s9TFKj=n4L<-5Tu^dppI+?wEN$ zaa^g#CRuRchzH+R#zq|G(f^v0CV03|z&NEC?g)It8Ndly{GD+f9G#fVG z-*gTBiW`o4L!X>Bku$aXTw=BS+iXCe#sYG=q4uzX+4OA13;!Q7$~kUd>+FW9ClEE< zKRzCJ!`?fgTQeiCt3f|o_1@Cb3STff|1 zk75vk;Ym3^FK=O<;(OE{{y^Z!+x*)|S>6|sp26=(OPFs2B!NbtB!iEAs)9Kf!-=#N zI8&9-1wn>ociV7!c@nZjTjIpf)^iZ;f3&5Y zjiUJ)J?%FGV!V_nYh~k6=Ox)X7*epc#htD?d&%QYO}uLcY^qFUixner|6E+`v?G?? z<8>o)@J}d!JF}lG-?U=by}w2V8dUfDg&Gic$m0ef2zHuQQ}3J4jKxN@V;afxRei*t zaj~J*>emE4ht$~maQvh4uMb-X>^0jy?>U$Kz zo-qn(FaU2FeS9i{rN8n6Uua8wF+5=(SV>=@;2KAb7E#Hi)l+^o1JU(mD|7txJuy*3 zXQAuUe`;~RN;XRAEX!|VO^OsF;j?v}5`kE)}K{Oa+!WyAaP z`C--jdZl4Q*pn@I&HmnG#Q8&mY?n-oO>%40x{6zpF;f!H!#$&E8`{Cudux#f; zDM^$M<)z{VFxeSwyqUOSXTZIP``DK4wBoTD!g0#Vpjw>JGYmO1E0j^o{<|&P?%1|Q z?_1q{yQFos7PALw`6p%v@cnS&15v4${2@581*drWcxQCdk7VND@hph`*dc>h&{E!7 zId{gsp88H@?rvq$u*~Z7rM|W@gwxYVE0H@JV#H@M&0W$~(CYY8XNfmZoK^>aOV6^- z;LZe2B{q$)XvMP*yLfHX9aG{t1G5a_=&pBu$e_)>hph`<@s+$ESKZ+@+Rl= zrZ%dVwlyGfyV0hq3AC-~Xqj>k$kQ4H#o(aZpYPJ1nhS#-IWPAah-RziJ)l3}s54srEV12x3p!}KkW`&XW8C5%p0 ze-aqfH8Zr(dc&YqZ;67rqusugy=CTGTD;wV(_S1DO?8yPxjm5j7XVw@RXn=hG`6VF zEVCCNUnk~tapm)BbGx6*lhV%h|4f3JKBr}!7%cr%z^&PqY?sG!y^{lX?LjN9cAH zc8c|0!PgtGWzN3rDwT;!dDmb}Vj(k0DxJfS(LuaL;XkIiCCnSx06!G5xKJ8shE;>( z?I@!%UDQj(afK0U(IYP;+y1v98RsyK8T`1QJjea_If=gg&Tu2XRIS^Qrv$K0OR;-- zx-uu3Q8N*+<|9@#gT%#2+U7}vGk0exC^!Y8A(7M*y1-7{KCbCs+H`~~J^tRTCsP4I zr=_AL$%U4Nmz3Vw493=N(IKF8>aCb1u&l`Dq@1MoXaP0!=wXf*u<&vYA9Zj0E?Uh& zyz0@>L4>5~gizxk)h?=lH17oyBblUMYvUoC3G#41a;sWvhHG}*4SMr3KYA`LHh{y& z^qlWaudgwbgE-i_?xrNrWiZFohr%!~ZDqf8Q1Uq>{F+h0P-ZYk%wko28zM0k>RmWy z?B%Yvhj*&szI&!VJjgceR*fj8j~Fl^icqwQLPOUUH<~hf2@GQtVo(m}KCan36Iajx zi(dU@{wPku*ufuBZAsS;h7IC+zemq3X9Q zarmcSIJ9v@I}%j8+FGFWCV7)x$_P+a0&X_n8YhZYaspeL2*H7#YOb9!U51lzn1??#iw?8Ra)~NRUrEIki;hGJY`;61eibyIk zv~DWtqPe0)a_l3a?Ll%mZ3-=WrLWvq0WP1*rjO7bZy$vMeaHseS)b(qNU7XQiu8xUO?4t2jsZUUqOWXKWu4Bs8s~IzWI55K!&8} z1nJHLFZv5g8*SvAU*D3O_3&aS(Y)01KG9FV7vV4uoG3KD?12#=anlV0zU#_Y@IZz; z9JFIv4@&H&TpqCGr^3y$MhG^5ji>2Bo0q90A0E$Mv>c(t9@Bl@J0=bEmTD>9`&l}< zMVP!I3^|b-M<7yam9lof*okUFVymDUoE-)u`R#~&1(j6{xvZ+$Fbz!>UAzmc;G+ukRSADCdZJ-?32k4|dm@VAu;adBtsTu3xoLOy>jSX-lg^fC!FNmYes|RpQfTp6s3eO6JvxXni_InOGrHGN| zBy3Kuq+8**IyKxb-8kQF72|bav67~`S&8@SG`h+TO!-_T=zwHb@-@5Wbp16i&+X+L z5dKDqt8y%n&)42TrCsu=_Q_A?%IuZ!X3jK67jZO-z~8jY6n;bL&>pa=*pFAY^?7Z& z%cg%|>xv|!uBhVaM(dz&weg`f`@GkZ<2n7}N+4ilV7p$%?&YIF&(^UeVA)^wujtp3 z?_!`q9Hyb+2&zxYw}!2s8W5^UDR&p(|7WtsK=ITrF>QgzlQ6lrHrRwHl_dX@8eo5@ z@~1^=%^=&i2-~u5jEM<%XAIzGY4P~4L+;A9i>Kv+EQI?Pf5xyoB!XC?aVJt4+K_(v zU4&yrbYMxFdIRJu5A$#R4>C2Lh%V0o$72KH{i@8u#T}hYM?4AqFSzLs2xRZS_8Bf& zqw@Lx9C1asnA$4W{Ca6MTjs_|6w&x^4D(kl#2|144YZ1ze~3<%R89q&kZaok=q_0E z0&?;_>BTAMJyZAOJa&dAmZ;!6etzu3iva-`rNhX|XffM15m@xjLiT4+3iY(E=wLUH z-A7uR75vR^&N-P>b_w%7s#K&D+W)+5Nf*F~_hgwo2yb60U8g^0-{U@SR~r%0CUcy` zsCqh#8Phj{ku^P?R$QKI%RE(>yg%JMJG(>x8&)IeN0SYz??uzq4`{dRnDL`|S3vcX zfg_!sQjgVC( zh?}knyeMd5{29Q<{Zr}SJHm{LR-f`=dOtB(sX1zd=UyaFLE%U|a1W#m3 z$xK2}PFv4@Wt%_&1n;YXSmmH?Ipf)L*x@IDEAw(Mfv3Sdr#p!AUGulimWti+FyQfO;O_@e(L*|%U230FBiV=b<#k$4Zo%c(pGHK~hCYv| znCQOTtwseilxWBV=fN=h6*du!qiqvIhpt)&1WvLxOg423BVpfdq_f$+ ziK$bwmb>r27}o#jG=#L2o<7M_W`A3L3kQ$_oT)hPf8%5ECUbKA!V>GZ)aKX3P6Z=S-K!Y+^r|F-{N zBwt8>=w#B%SEb;AQkFAU(z}F)R9i+f!Es$uSgxT9j$OQg3Xd7A;4ef=Dk#!$!g;gF zemGNe=ak>zm+M_g6`ESRBMvLmWcunZruA*oZ8ixL#Cpotd1OEW zhOAqE)9&3v5w}stLrdiM(A=e7c90aA?xP((E#%HBNzGjpAIHVlL`M0rgIu}yOF#K; zF9>YXgz-}h#Ce{dL}1^k3m6AH9rpVYDatjrAvFYEnOjf1PgvH}5I@ArnLE)Qf7{v6 zrdO%kHWkFmdcA{}rz*DfMGE$1VDBO_Y7|xN6zSe^Ob-vfoYt-RPC{-JPIoR2oQAH*@)>~V4wR+ zCc59Z8t=!l@#g?gf9=>5(I;UAS`n`Nwa&-|=YqW-+D(IS{*)%{A97``J7e#>P*o}U z3Crr@dqL$NaJNe4h$E|eitljyR^H8j@iu~$r4ie5WUYm!bd#!Jx9Dg!rT`YyJ?P>R zNOZ<6Wc_?O^mJiak3;vPBt$cUI4|L#`>4C#)c zAfi-INM|GEKm#_qe(FL6m&saLqx9GZhWUpHE~GkjqMzd27E4ra?A~ZkN|iF1E~g~# zSFUN^$FAaH+7!^pste>TXWoO)PE^~ARMVp(OLlisO!}dXCX0X_NOe(Js&cx*ds(L+ zAM2duoLj==zjko^MCVc3LiQL|qOPjA#S_k46?iv*7Q&Ckjl9Ie7$1kR4E{)X4z zZl5_eykzWlFtz{g@`H9=<}hI-W-#U63S-IL)~2N{E`hx!Mqy2_qrp?H9Fk5;s^Rjd zt{ahJ=;#9*0I+NGZU$AEi@#1LPpE?fP)DwR@!b)A?n7TRH#Ld7i&u=Ndk5_@riyljNm`HTAs|+5H0A?j) zg7tfO0f*$Q-jQ)gv|R5koWuU;}K zJBC?iy$^4OQ}?cq9FdVwa3o`sS3tbN0@wROUr8_r+bL3ToWAntZz<>im4qbd1W)Pm zTbHyPy04jdNitnDdLsxf!{e3isszr#m(B=OSbgb-pb2nBFO~*XQkfn+n(^wh!HJYe z8?&z-t$UrLAywl7FmwR7$w)0;B%vC)U~RPGTGMR5>sCGcQO2ED?z#BIKhw96vf}Rq zpN#pT@?D&5P_CUCM+WNvDiXA6*WGe6?|yX-pN9Yjj*Py&#crzfC2KV)&v(1o-zB*H zUb(uaiamJAIxN0w@_IRzL|z4Davd7lu?P0EB^l?Au5DUipM)I32{r5juB@7=Cs|au zHprv;s0DlyceICNK_WSHsi~dW+L^)4OJboqCRz_p=Rti3eKj?UPb2+vo8CF6rzmj2 zrD^b>Yu_Q(vZCbK$(Rl2{Jp=o(rDSO5O0r8lc?IO+VMgzW&|WlFB)6j$~MRp13F?~ z%uDG5E!?O1+kKLrge(YC9J|zJQ$V|EX-}~+=6fpGVl-1`uRtaQIVu;k*x*HChDEyaGV(x~~&6fi@Jk0&G zQ$x}+ZJ#vY-;sIOj3R=V1S*boDgx}uD3M1Zn6pCJPoXIr*@GrSiG(V~XfBC2M*x^V=Vb`>{o)3vJmTrJm^mj1d)f^PxRUYys_Bi};?va>d zfY3KYcx`&(>Y?C2yE1^_5$!m~xOGw8}v0t-ce6c?_ zf}QsHb1?s*#XugMD-(zA!GXI(x9hhv_K*?0W?9;f4%;|b?`BJ^f-#mah743~>Of!T zAaqTG;6ka_ySEVVyg6=5Uct(3X`zsq@&Z#qwQU^hKz^@Q8mydcJ_Wi{iTc(Nw{0_t zlGzeQABsSd*`5(YRBmRWT5?VnD6?&bqn&%o%sV|AeBd2~rV~hm1R$%8YTbpq7$ZYI z(P)yx`)=hO)-!JYu2iW!YF^o4@Bz7iQ04TcPD6T-oIwpKZCQq;YyhLgFOlP6V{Ie+ z+wS`du!LPy4YU5xfjA<+Or^_k9)h^N=o|4;B4Qei|iBz(h9yT$PHc9F^zvkLUTBrP;L+gEG>q(f$&0 z?91`th>;Y##; z#jA*$8^K$b4)X6oOzUWC@oi68VGVo#%e?Rm$@{BBZn_JP0kRj8MYEQW_UzyAzQPL^ z!D#DN!PwxO)USKu;leuV{%fK7kau87*gEdSF<;tU)LKxL?DZ>hYD4n}n;*tR5pZ#` zs^8bP&p=Bapu7j=5DZQ?uNk*JKlk?+&m;fPtWxn{AzIF6^dQ~F12Ol{Hxg^#K@-7D z0F(yfkP%x2WnGEA0@>x4i1#-RuiQAbs9skh;zIVSqaes+GqJcp?wx+dba&%~g}9wM-w5j0L=jp#&BaWgNo=962xaoh`4nJeH4JH1O11$7XVlvLwiKl z7bS!W_Foa!6m0`Cye55T?{{1-u_cb!E?FX3#hjmq$8WC2@Iac1(~(wC#*61yTU3os zbPk3;KIki^WH0;i>?z{PB(l+%lYT9#7>=~tK3)&cA1yvU`xb`tObIKsM(EqfK7#;i zOvDsJ)iv>$(8tUP_2MApwc>*vbKE?g8&K;!ANmZP4nmRii#~4>)*0AWx;ni&iy-OU za%Zk!72auvi)rA_?&S9|c<|(Jo_$WYhr9R{<0cHz!7nZ+`q#b8p`D*f!o!pqgC=Q^bSKF5#Eyn#X7t#O&r zLfobOn~Lj(oZ>r6;S$3o1C$fh$JT(e5|aB={w*U`Lv7B* zdhsp3 zMB}QV;dxfq(Vuw4bgB}3)ceE;Hn1h+7XvzTqSn_DN6?Mk9zot>#fPJ?ueUE^HGKEq zA6;;d++bvU!ldJ%YP%0I9(58XUGcSFN@gh;E3G;nI=LXmmDWj+EVu}iSTkrlZNqt;fX_IC%1e8p-F>2g^(>G6cpxXonOvRS2JD4w&|v{Q5X(i*eF zGVS_(tI97RHQOYnJDt{02Ro{`3k)?N#8{(^BFb?68+m&{iH90v zf>Knd2xd1P9y=abdMwZmo2Q`1o;y>u3sc`9;4M#lNZS=3!N$9Z2`X#5lc(p=_au<+<6TkJT7 z>aCZxteZYrFJ%l$2TBt`%Ym8de&XZ7@8AIY`!}v4F1ZzJ3*vvD5O!queFDW!Wn{B6hFl$x6e-WZ)J*Qx)3$Y z-#RTx2yD}E{$%V@SJafy8RZ`)#YmfAu|Rwp@4{t86v2il`@SSdg;Z)46v^}{rh&+y zs~o|OjmF_CN@4duoTuG3T8_qp-T_zf0-L#6A^a=`6hxBr26;7&*Gpc+xmx5c5&;`Q z^P?KkSdES#|57R3p6mvDC{s7-*R>et9HHrIo#ycAzm9rCRmmY{b;p33BV3Ur)@SkL0)Nz>PS#b2iDmeE{H02r2_*W+~i9wJ|r@`=kM*2WSqhU%i92qc~Tu?Fo4m;1Q4@G!eI;oE+0w7WA(8?{Id6l!WtN65-)7NzrqUQT)k#4wEs-s+jsr-^6a3}TDDRj2aUmBl14|XTe|;e5xqjLd@B0`wuQi_Hgi1+*Zm$d+sYV8Urro%i!7x>5394wvl#fCU}9t6h)2nEfm72Q$?uX z#)V|Ky(2w(&tzFuNn2*@(X?x@UZ3&WE$X`TarES7X%fil$(?+OM0f^}7GYgknd19` zHb$c}ZC9G(8YR`Eq&N|aCcZW6m!^l^=kp8mpLr6RX-v(bQ$x{fp;04z7q!RtGqv23 zYpmjbWl+B5aJ`rNO{XzjL=N^S?sOmy|ZZ5s5HvnNxsbswqAmT1B z7U94aDUnv(LBrAkXWEC&UGUA&b00A4voAF7I~s9YBFP3~*11_C6yYUbGxp|PcA}7I zKQ7QjG>bjbk~!>MiO(~QaZEpRjSZwKN}(Z3*KeU3Q(Rrl+E1b_A~}4=qZq_4pVVNI zqB!F5LV_cTTaeM&LZ)5K&RHw8k| zbzL+bw>(2Ij%FMrp!?PBZN8eMtCj&4m>c@9@7Qxt^QlIpv)#>y;XxSj$Nc6O=F7xT zG8gytD<3r)lbe=c#4$=v;zZluFt6!-(IU{hXgYt|XIvjb-a$w(uXtCnd7VlQ>-k5m zakK=Un=Uy6&XsLEXGr5tx~RO0Pkkmy7bDY88TV=-&Xb$oC+iB3dmg*VGi;p}ugg0* zzYWG)13)Kk)Lmi!WDL(YY;@1>CuR2F>l|N=I*M|)9k%a5Gc#we zA4ynz*93;3EgWZ=3@^YFcShg`@YCWulguxk&S?B-&nga=3h7bk-?7RNtQqc@GpJq% zSi&^aFq0l(^ZU98UowF2lG`_B%JOhEV#PTSkK?ocGlgH1(GVolcHJg6Skn_ur|}kj?Xv=ec|;$9_UkIx%XeiQz=+PM$VAIzMc5bHr#ZrjY_I=yY+w zbC3~;4i-%vyiWzxoJ3fV)kOjl?98rJ0<0>dpsvZmVhAbz)w*N1Q+Fi3!lj~QTW8IG8St0!fnw9{Qe*8kpD*&^via#aZ}A||Oz9Def1 z)Hn<{YS99<|7-pm25)<`snXfofpPs7ZVU>{=<+4KP1S=LtE!bp#la>@!@NNSx|bXm zm|?fDfLiOp>YmC-8hY8ZAojN^=XC`pzsb2t7Ue}(F6p3b8$X{4t_3q0ZBt((LuUq# z;odaEw^}~2>Il8C7f)cyR>k^(_md-nO5S6u-ox*Mn;ggG@KOR(MJ()O(szTfn^ay6 zq;?Wy_OpZ?Xzks#3Bu`itFi7{N)U+4LE-Ki3?|a`zanoK-g<}T36y{&xE$N}{J|4# z{I7+=w0@P~NcENCHuu}S!_tH)`l3ke&Lr@i`g5TA6v}H0Al2&6=79uP?>p;1aT=zpJI}xhF+oYV3dAaJzo2q`Qe}S8z0&9))myU}UO$>@Ie-ws=*Zm6vI5Me z**D6ZC$?DZpvKP8D!6X+obfz>x#$23tU2G2@+)$Oi;$g2hHwhGB^IK&mbSB#3aK2a zexl&rIy~7@FHx&3w3O$^C#{xWI4BG5WgMch0JDCkB-Ig&A;BvYEny)Yu?Fdwg%#^6 zvo;dKi)Q<(Qeg<&qq4ux;M-m1xY3kXCP47wzlK~BgKy6u-!D|Ez}!H3+#&cx%GXFy zTt)S}U9t~SBUP4Uq>p*L;=LK+HmRs9g(2!~wZA#8+C;h9)_2MIc$--U2{v43Mz~8S zcQBGEk&~A`J|F7RnZPZi>hs%x?n)z2=N5p0Io!d09>nj8>nK8Z=m}5J$6NWfS>i^t zI$0D3%U7CO0;p_v0d?=X3#p%dT#yIm1G%Gz9|&$wZ!+Q)Nh1#zmECu#hbbeG$Et6( zLaR(Hj#b4hacX+3O#VZ3H#LubdfyGwVtP}JwHZg6S^-11&lxQ~UoU#$7}Jh-l1b;L zI46|$*1Wj9LQY3Apbdl8BKF#~2#!}~-Sx)(-PdO$RI04vmPn$)dx??HPuA;JEi{yA z@lAM6pIkS8UG;rulWa*R!c84+_5HY4QTE0L&gXL^+$=AtqsZBv2kX3?aPG`w!70s0 zlY^qyrrao^ZLfeyXO09D{@P*ov|LD1B8?_(xBk`w#q*X^|K6snwa0cV5>D1mN}-S? zsDqAn{{?TM>JZGuVN92G;WoWK)zFs`JVoSG=14(=-repz>kWSW)|iub6C37d4+25B zj23eKc-B+5T2#Q*Ev!WwnoKKm_1NINjGq;!^Rfx~dOqD!%Z>Vp;pG`>`}b3Suay#6cm!Al1r>_9p zXvxyskO(if{W;^`-P<-&@*t(KPYC17=CvDENH1Qj=Q>Z>F1!^TS0<|!<$TYTSl4rz zprv3qA_DbKv?(lQmA-#rbw;)Wem5pPFmf+@Vw9_NW)bcTNHi4|N`wUsD=v(vofSe1 zSF?$@q_x|yGFExG!DN3KIt!k&PgZ-mETAd{n@%J|FDg*M_yH&O^lk;IhBXf&PN*dB zBC3OnveL#N*Qn`DH3MAez>4{ic1JkB>|&<;1@i4Hmqq5_V0@aooX*VC$-TVef#5o2 zNj3S9R%6kRV8*ajaZG@`M40AHlY6)8Js+VgFNf=tEwBv{AJ>9d@(XDW72tuJDX40rVJQ>rRY zmYjK9y9$KA_ux_(*%*k;g6(7fne`vng%+v=h3D__9Pf8qj9ZNTcY&F)i~|^Ps(~058@9b7NI1&bkxcu2 z-ipPJ*OL^F|5SR9v~cd~&8CKf-A6e;)8CGud&4aIT7m;!_$sRCJ^l-2W&b}>RyH=) z|L>LPu78c*#%$I*u4iLnG)-8@%Rzt3jk9kWc|w@2*Rua2nvOm z`$VRo^R^+WI3y8;f8#SPC`XR_)3D2p*T?<+DGWzdZ})x=c!!U#^EQCz=X0e5dhd;n zkMCN+I5VPbEr=tjTSwV?CgpvpHp@gKe<$vd#)cBOXS7-5XH%NwxUj2Nz@_nC; z_*gD}#|O%2Ua}hFVY#xLvp8dRI6X8BJFP>k(52hUe&3R0r|)f!6p@TNNp< z<9`4pjtsN#Uc)^=I3j(LIb>jCXR5<3Fg9ZJ^I?5fzaKBJyY6YFB?&xaY8nCb> zKWdZjQUuX6=f1t+kUj^|5H6@M9;22>g6+j-OV9Si`NbS;dwW~f!g}sFC!3(ncVU~z zrtWzsTwhw!+GrF;)*UqC7X$O^Q1TU}S_`Z3GHi>yW4-Hd-etCA7$c{nMC~@J?3zUi zl=3c8;%%SN>DFw9M;+jOXHN$hS2WehPG5Zu<{j0Z(Mlc^XRS}`*GSUW`2eSNt7A$T z27OtcG{OTk>o}jq9_Py06CzA{#i8%Zl3-{z9Ot#ERkIaFFcyciWRzxc>b9CWs3#*% ziaFwZ+y`NlG)T&t=8LS^ENd}S+hSbq2x-Ol%2{O864=FAflSmxyQqNnbzd$utp=Er zfu(;zh4*NMRak}AVJ_eP)3pxB&4+j*L}(>hA3WEyyc9o~)S1?}m8S2`2pH)cYpT$m zem#YtITXP9-@(4amnKE95>{#Nrh8tc0U%mbwoB#KKM83VGPrjX_&Sf&7rI!yYOdG9 zd!IN@+?l7$M_)$Ofsr##AV7}8RyyOg7e7!ZO>t*8=H+I$t=t<(-jivNSros#Dr^(J ziL*|q=TusT6xU$wmgfHD-Co|=mFK)fHy%)rw>vxX9Sq-$?jr)IDTce=2m=X=I8zz? zA4FNVh7*0XmVw;8i&JB|r;Im^+0ZqcW=fB6OmV}UbLgppK0GuIR!nFt?rq#kOb)tk zE1k9=Ym6aNI2TlNdh?nV%TKWo>{WHg|8?XQs~6J(`C-4?Q?^>a)U8tG?TPoiLaouG z4Vi*J2coZdzI4(i{BucF6*nZJ8&7D;uMLonAdSGHQc`0jE@zlDdg%c=2UH+1GTS)luDgv^&Z^utuw@DJ z`TrWf*lKcYCxJl<4vR2Fo&W*KAYz`?&Vts7Y8hYLtTZ3>YlqHbKZTP=BTs$3$c%Ig z?0;y#?D%(@54-wCKuj+<*kh11t3_>A%b2OY2Zyx09=S&Xq@nvq@tr7PD}uMgdd4RX8Y`#d@!D+0zkXlm%I+^A(#8*V$%%l40j zvu#oY@81E|#ukvnY;~wN=on~#vrr%A$-&>G6vyhFA|OQlfZ@>Wty``Ulv~7wzQA!Y zjc>6d0Sr}R6DR|%|I*!f2;R+o@+FEzp|I7qwFdvvudQ^0P?PQRj^#ml3BY^|@c+_x zJ`Wk6B@GOMeZj;t&444rh*hB?k) zxuRA&d%N8HL8$hBC!}t3bAg)ba=Lx4x9FrE&yF6+&h`Ra@SbPv>jvDSxnhpjcb}>e zCib6RTi*?5MzCEm2wJsD{vTuC6r@Si1=+UEuWj45ZQHhcnlo+Nwr$&Y?hq)HyfmX6DWOU5eX09`57oGK2cG8x#JxU}jfftch=1ZQgI`c}5r1 z%LgumC)?~e?KRvIzQDI+v3UhkQtP4JwTBaJ);|%s#IfvRj8thGzk4UG}hEidS z83RR4bOlp;;r-P!m$M7D^IS;2#(4AE(&T^HhIBDl_TBd;+a;0YYafa5fJZVl)@?U|j^e z7H%g29NLz7Xon3-_3WvWt|owQW6Rv4o7QhO-93MnljOQ0X>9 z$Ta%tMG%F44Tx~6dV(>S136cbgRUUr0M-DOKTi{;v^oyj{^x_EQSyd}gi8Ed_wM`g z-%8@B;b7%0BVfIR3>ZTIm~;!(dV&0ej3B-N_eEj{;#H0dei}l48afI5L$FUPUrQzl zDez|u_GeUVY5$)Mb5p;^eSN(xJw9psYfZpjGqKIIr!D%^*8@9Tl5u>PF)TOYA=sbsrGC@6+ zjn8|%2iwA*B=xxq@!!i(piQ>ZF-bS^GY|4JFTYARZ($&mxsCu2SnSgf;uC1M`7xO! z361Ke9v&?twS#bSVWaQ7%hm)UP?rgQVdd6mLl1E^U_&yM_VePj&@i?66eS2)r5Bz^0<*|BVDN--LBs9IRFv?6FCoscpr zL~kMJA8K*L7cjqMwnavR!vK;92JerA2FCl<4*V!04%-BYO^08CS*z_imm8tSB}^IK zq?Mc;+63Iy(&HSGKz!u4|KG7_BhZChHLAk+Z<)v7pTP?I+?73pOwG@@gycJgjD8n# zcf?O|{#k&4Lq8Sw+6V~$R|P(HZS6|s)X@2$Tb_Bh!I>3Eu*1$?*)xWy84eM~0*gV` zd`t37k}P))3rs-01lm(v(D+(jhs5QeT8$vSizTzUJ~iG4`{)H|Udjt+jCV|~LtF`A zIhP%?u9+S^IQ_Jh$1fR9`X39+?0agW!hhRPeu63%?OfBx?zo2L*U7*fW$dO_ zX6=C4jluCcENDJ6zrw1|$B2D&;8iS@uKg|;h%5=c$P|W64rI>wq=r7fU%Di)Z_{Qi z7Z74RIC7eAHh}tdcZ3>g+981+FiB0|Vq6-<7^OWqXbsS@j6>`S_Z| zSW=in&^dBMU?DEO+iJiUvN7&bSA~lUe1IVGR&HUOx1IHVJ2^b4#46YTsBRg1uNv>g z3W5W+^3vThE!L#Xm}GlTUDlR=k`cp-tWv`t!pU;lyEWq_aM=rlyZzs4f_jNLJKQEe zRxY|l?3@}hIMEGGfj>^m7`p8xdP8PR(6sTObYSz^(!p$_TJ*7O9(8E~UH9_M4R}@N zO|yY=7j(TPIiLKO);%JTRD(;uXgq`F$;r}qxxWzU!A=EIjOZuL$K|ouENwi8-&c< zNR!80a;~x=%Gy&$8w}B@FIMTD5*`}0(gS#dXYa^edIDjOgpKrYY`o`h>1HUEvT#N> z8)vPu(vM01&U+xC8Uu|?cInMvc9a3FR42kn3;k4r4ul8q(^p=>>fs5xTB}Vaj#Be~ zuXAoIYR=62iY+YhYGDSj#fq^ z)4K@!1x2CUb1<~A3)0LCgH*3qoR>eOI4-o^j7ILa5HNU2+|S%P)6vrLXzFLA--b$q zAjZPsKw79=_7GHh#6~tMAa!-fIzEV{lE0fPSd^!lwEy~4+fi>L^;)7qV#`(iJMdtq zK}aO*p%z;<>G31_R5lPXlO#IVXQ+GJnReHZwzl?YP7WMg>xgHWcBj;@aQ{5DY7yB4 zf1m0)>?wz;$0we`!t~5!g`Oat0V<+@=sPp!3!0DK@>{gUo_qLW>!A{fVn4~@$J>^U> z;;f)xf?+)~@eFLXXat`w*BJwINDV=&%_{!h%rfKV3~(>wvNBhCYWnWY+{_P_2ge8% z9rQ^8kTLX=#dQJ-Xp-LZN{{c&Yp;vmlj`JIV`SG6Z8bF~unRY~i9h=E&Qt3p?>?UF zwvo7z)mQCK7YM3>%s|f5`=WS#TLGHVDYtcvQ0B|6%EXvmFx-LHOoH=$3-q{%r-shyyrOv*lnsWLr@lmdmxgY zZR6ZknI+O*o~yQ)n0KFO7eFv+_4?&Fu&rcC+X1O5ETBXVP8Xzszsmk*p5anWe~!)x z2iJ9Wy1tHv!c$}fA=_Y*IDu1r$|AQ|3B9=4V0&ZC=L0Ro5Vj0k<0J=rufnXtaUvgt<<12&o)w~z& z;{{N8kgOML`UEZSziv*9p`mmD14w*JI|K{#*!mP<2T1%TtL`_FHZL}#OOW4ll=gV% z+Zj%8bJ{w8V=9EIf~=pGhjvx7ZNmFmJ?*r+v<$_ZPT&y+qwN)tCRyug#YyoJe2B=x z@QubiS6P!K@6&~O*ruRQcTlBJS{U^$kGS<+Z;~kZv{%2$65Zda>%@-bg%oy@^X2P@lLahqlG1s%57X3I!bjxEL^8 zV{UZ&zeuHtgIoXv%mGWW$41V}w+*lXPKL~i=o+dNjwrD4SOk*O%4CZajei|6 zg;WU<3LI!xem>HZyR;o?{Wnr6bL(QE>;noF7p*kgK0c{<9ek7%C7Z34u`DDHYArRf zpSJJiemmC`vA{n4bX^K_-FPyDqm!SjCMgYI%P43bU61CfYbdE)Ua0u9)-8&@K7qt* zC4HuZ^ofp|MW`n^bK+1mM0GeVZ}UOxJ;~B&Id6ZXu4}y0$hF)3xafL&aXzhA?-AsU zJW9Zgs8N$MF*?-?s>C-Vj3(~5p6$wK$Lqwou&-m$?AwTgH3(dmR=#IWpX;v^Gw77B zrblSCTgdAH2#fn}h93d07>^)<#F!8xy$(i-gS%u;+PVRm=JlDI23dA(|4ehq1!~>K zr-P$o2WaR+MQFs_7|%=wLbFcH8u{Acogh&PT?#iIBQoxuzYiqhOM+l)vmy2-^?2yd zD&eK^tQ*#oZ?ub>PlEo2R_vM_6Bb(9lYi>ZM``N;rt0bvjiqOkmeqUm8Vl?)aBp_k zJ>04ksL-D0;cQ6a&t%W37V1=XlSC((H_m~&fy}7{4!WVzBNDnAa^*Ig4jEq_Zs_vN zrX{~er1J$6E|L=}8iFWBEa7%OGi6QPhh-eAh59c@4QY>QNa*N!gD13zn`~xC4Iq4N z<=TJ^&iiE2yzn<#1O6#jGCJy`$6WhpmfgM4dk=k$W8>0jA0rueQPx$G<*U_?j zF}Js=?S272-;mw>buFuwI!7Gx?hbwSDs)C
  • mJ$UD%zLf{d6QMILG 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 Yt{%=7me}0fARc}JYz79fiZu5B0GTylSO5S3 literal 0 HcmV?d00001 diff --git a/0-Docs-Yensy/VS Code - Let it Cook - Introducing Spec Kit for Spec-Driven Development! - Episode 13.txt b/0-Docs-Yensy/VS Code - Let it Cook - Introducing Spec Kit for Spec-Driven Development! - Episode 13.txt new file mode 100644 index 0000000000..0adadb47f9 --- /dev/null +++ b/0-Docs-Yensy/VS Code - Let it Cook - Introducing Spec Kit for Spec-Driven Development! - Episode 13.txt @@ -0,0 +1,145 @@ +(837) 🔴 VS Code - Let it Cook - Introducing Spec Kit for Spec-Driven Development! - Episode 13 - YouTube +https://www.youtube.com/watch?v=DTw9X7MtU5s + +Transcript: +(00:00) [Music] Woohoo! [Music] Woo! [Music] Woohoo! [Music] Woo! [Music] Woo! [Music] +(01:43) Welcome back everyone to Let coe [Music] the Burk's camera just pan around. That was That was awesome. I was just watching it do full 360 so people can't see but we can I can see at least everything that's happening below and it just full 360. That your little machine over there. That's cute. Yeah. Yeah. Look at that. +(02:06) You like that? Oh, nice. That's super nice. You have a transparent case. It's almost like a fish tank. Yeah. It's like all glass in there. You can put like figurines in there and stuff, but Yeah, that liquid liquid cooled people do that. Yeah, of course. Gods do. Yeah, +(02:24) I see. I see the CLC pipes going there. Uhhuh. Yeah. The f the my when I was in back in my day, you used to my roommate in college on his rig. It was like the f one of those first round liquid coolers and you actually have to fill like the basin. Yeah. Like you put the basin like you take out the DVD slot, you put it in there and like this is going to be great. That's a mistake. +(02:42) and then it accidentally like leaked I think and like ruined the machine. So, but now they've gotten a lot better. I'm just saying PLC's are better. That that's that's that's why I never opt for actually building it myself. I just want to build like a machine with a pre pre-made closed loop cooler and there you go. Yes. And it's good to go. I just buy machines that are so small that I don't even know what's happening inside there. +(03:01) Is anything happening inside the sea monkeys? Are they in there? No, I think they're dead. I forgot to feed them jeez about a month ago. It didn't cook it up for them. Uh well, if anyone's their first time here, this is the show where we do this. Uh that is for sure. I'm James Monttoagno. With me, Burke Holland, the one and only. And with us, Mr. +(03:22) Den Delmarski, I don't even know how to say your last name. Is it? That is That is correct. It's It's hard to say like it's fine. You did it perfectly. Oh, wow. Nailed it. Wow. With an last name like Montto Magno, which is actually Monttomano. Then no one's going to get it right. James from now on. That That's it. James Gayano Monttomano. Yeah, that's my whole family's from Italy. +(03:42) So, uh, yes, it would be Monttomano. It's actually a small commune. We had someone on X who actually did a tour through Italy and stopped in the Monttomano town. There's actually a small commune town. There's like a few hundred people, I think maybe a thousand people that live there. +(04:01) Is that where you're from or that's just happen stance? No, my uh grandpa's from southern Italy and my nana is from Sicily. So, I am from Ohio. That is where I am from. That's not where I'm at now, but that is where I am from. Uh there. Um yes, that's my my lineage. I don't I mean that's what I assume because I've been told. I'm not going to give anyone my DNA, but you know, that's what that's what I know. So, well, bring up that freaking 23 and me. Let's check it out. +(04:27) We're never going to get through this stream. We have we got hard stops, which means we got to get cooking. Can I ask this? I want to see this cuz I don't understand this at all. So we asked Den to come on because and I wish Pierce was here but PICE is too busy for us nowadays to be honest with you. +(04:45) And um so what's interesting when we think about you know developing with AI there's a few different camps out there right there's a camp that is just like I'm going just give it you know a single line and go. There's a camp that's like I'm going to write a few sentences, give it like quite a few information and go, right? Or like me, I'm kind of in between or like I might give it an issue like I'm going to work with some AI, do a little task list and like go. +(05:08) And then if you're like Pierce actually who's been talking about specificationdriven development for a long time, actually one of the very first episodes here, that's what Pierce actually showed off. like scripts and things and I actually have like a repo where I copied all of his files into which is like doing a bunch of work like planning like actual planning documentation things like that and in fact when I worked at Canon back back in my day in Arizona when I worked at Canon our architect worked with our documentation team which worked our PMS and our engineers and everything had big +(05:38) specification everything was documented in fact like the thing was already documented before we even wrote the thing like like the fun like the functionality was already documented for our end users and all they would have was a placeholder for a screenshot of it. And actually it wasn't even just that. +(05:56) It would be like our designer would put in here's what it's going to look like and 90% of the time 95% of the time it was pretty accurate. So we were able to follow those specifications and that is a lot of upfront work that then gets put down on it. So there's many different camps out there. Some of us are believers, some of us are not skeptics skeptics out there. +(06:14) And then other people I'm quit programming if I got to write specs all day. So, uh, we asked Dana because just on Tuesday, the team, a team, some team, maybe just Den, but a whole bunch of people, there's there's a team. There's a bunch of people. It's not just me. +(06:36) A whole bunch of people, an amazing team of supertalented engineers and PMs and luminaries came out with specit, which is on the GitHub GitHub, github.comgithubspec-kit, uh, which have awesome thing. I'll find a blog post. I'll put it in here. So, we asked Den to come on to be like, what is this thing? How do you use it and why would you want to use it and what does it look like? So then totally first is specd driven development. +(06:57) Did I actually nail anything about specific? You did you you actually did like it's it's people over complicated a little bit because they think it's like spec driven development is this like magical thing that has like a bunch of complexity involved in it's like and realistically all it is it's like prompt engineering on steroids. Is that is that a good way to put it? I think so. +(07:18) It's basically look I if you are working on a project with um NLM right if you're you're if you're building something that is using AI and you have to build it in the way that you the developer want it to be like what do you do right like you you have to give instructions to the you have to write out the instructions to basically provide this context to what you're actually building and how you want to build it and what tech stack and all these things right so spectriven development is basically you spending upfront some amount of time to go and define that and then have the LM build exactly +(07:48) what you wanted per specification. This is especially important if you're working on a team or a project where there are specific constraints like what if your team is using I don't know Nex.js JS or maybe you're using Vite or you're using some no framework at all and you have to kind of steer the LM like across your entire company of saying like hey whoever is vibing on any you know landing pages and anything like we always want to make sure that it uses Nex.js GS we always want to make sure that it uses Cosmos DB for data storage and all these things right so when you +(08:17) have specs that kind of guide a lot of this stuff you can create these constraints not only that but think of how the the inversion here works a little bit is that right now we treat code as this artifact that we like you check it in through a repo that's the source of truth right like code is everything but code also binds you to a very specific implementation right like if I am running um you If if I'm creating a website for like a podcast or a landing page, uh if I write the code, that's it. That that's that's the implementation, +(08:49) right? And if I want to create like a new variation of it, I like I wonder what this page would look like if it, you know, I rearrange the tiles differently or I had my login screen be different. You basically have to reimplement this thing from scratch. You have to go and rebuild it and figure out how to do this. +(09:07) The spec acts as kind of an inversion of this model where this the spec is agnostic of the implementation, right? Like once you have the spec, you can guide the LLM to 10 different implementations and say like, "Oh, create me like 10 variations of this login page because the the kind of the constraints are still the same, right? Like you're you're you're building the the the kind of the scaffolding for it and then you let the LLM cook. +(09:28) You let it let it do its thing and you I I had to sneak it in, but you got to let it cook. You got to let it cook. That's that's what SPEC driven at a high level is. So it's basically you're encoding context up front. So then you have the freedom to explore like various implementations, various, you know, variations of the project that you're building. It's kind of nice. I like it. +(09:46) And I think this is kind of important because I've gone into different uh enterprises and they call these um things app factories. And this is this is something app factory. The whole idea is hey, we're not building one app. We're building hundreds of apps, right? Over and over and again, all for different functions and purposes and functionality out there, right? So their whole goal in the beginning, so this is like a decade ago, five years ago, you know, two two years ago when I go talk to these big businesses, it would be like, hey, listen, I'm just trying to +(10:15) figure out like what stack, what's the stack that I can standardize on to actually be able to enable my engineers to not have to relearn brand new tech stacks or have different tech stacks. So we can interchange team members that could say, "Okay, we're spinning up this app. Go take this person from here while this person maintains it and they'll move it over. +(10:32) " So here what I'm thinking is like with the the spec the spec sort of driven development is if we do a bunch of work up front even if you're doing one app or you're doing hundreds of apps you were then able to kind of templatize. So like that business is all right hey we're using . +(10:50) NET on the back end we're using React on the front end here is our specs for how we build applications today and now we can actually start to implement sort of plan out apps on top of it precisely because you have the spec that encodes your why and the what and then the rest of the pieces and we'll we'll show that later in a little bit but like the rest of the pieces are very much flexible. +(11:09) So if you write an application uh or you write the specification for let's say like a marketing website that you're building and at some point your team decides to move to like oh we're going to use .NET Aspire to do all these deployments. We're going to use like ASP.NET Core instead of React. Well like guess what? You're not rewriting your spec. Your spec is the same like you defined your what and the why. +(11:28) What changes is the how. So now you just need to redo the how. and and also the specking codes very well a point in time snapshot of like why is this the way that it is? What are the functional requirements? What are the things that are static? And by the way, like when we talk about spec, when we talk about like vibing in comparison to each specs also evolve like people treat them as static things, but they're they're really not. +(11:53) Like it doesn't mean that like once you write the markdown file and you check it into a repo that's that's it forever. You can change it as things come in, as your requirements change, as your product changes. But yeah, it's kind of fun area. How does this, you know, we've we've talked a lot and you and I have demoed a lot and people have demo like PRDs, requirement documents, like how does PRDS like blend into specifications? Are they part of it? Is it different? Because that's been my vibe, which was like the easiest way to do it is kind of like lightweight spectriven development. I want to build this thing. Let's create a +(12:23) PRD based off of it. Do some market research. is like is that part of this process or is it different? It absolutely is. Um I do want to call out the fact that like you you say PRD and to me like there there's several kind of pieces. Sean says PRD because that's the first thing that's the first thing everyone says is PRD. +(12:41) I didn't know Amanda was talking about it. You were talking about it. I just asked Copa what the heck is a PRD? Product requirements document. That that's basically and PM PM speak for spec. That that's all it is. That that's uh it's a spec document. +(12:58) So, uh, when you write a PRD, that's kind of you you define the what and the why, like what are we building and why are we building this, right? Like you're not really focusing too much on like the how the technical implementations like which APIs do we use and where do we plug them in and how do we scale this? It's more about what is the solution and why what's the grounding data? We have customer insights. +(13:16) We have some rationale for it and that that's what the PRD is. But in our respective development process, we we essentially split up the PRD from the how and then a detailed breakdown of tasks that the LM needs to follow to execute on on the plan and the PRD that underpins it. So we'll we'll actually like maybe maybe we can show it. Yeah, let's look at it. +(13:39) Well, because this will be interesting because PRD means something totally different to who you ask. Like if you ask I have a template that I use for my PRDS. guarantee you it looks nothing like probably what you've got. So I'm curious to see like what this looks like here. Okay, so we have this project. It's called SpecKit. It's open source. It's on GitHub. +(13:58) And by the way, it's all it is. It's essentially a scaffolding set of templates. Like we've we've experimented with this with uh our good colleague John Lamb. Shout out John. He who did the initial like a lot of the work here. So um what I like to do Dan really quick when you you do go John Lamb. John Lamb. Oh, wait. Let me get the hand horn out. +(14:18) Oh, you guys came prepared. I I look at that. There you go. Oh, yes. Thank you. Shout out John Lamb. Um, but anyway, so, uh, we're going to look at the specit. So, specitate, like I said, it's a set of templates, essentially scaffolding for you. And because we want to make it easier for folks, we actually built a little CLI here that you can use. +(14:41) So, if you scroll to install specify, specify is what we call the CLI. You can use this. It's built with Python. Uh, and we're going to use UVX because uh, UV is freaking awesome. And what even is that? Is that like npx? Yeah, is basically is npx for Python. Okay. Oh, and there's like a DNx now, too, which is the net one as well. That's DMX. That's meet me outside. My rough riders. +(15:05) Yeah. What's his name? Um, DMX. Uh, so so let's say you didn't have this. Could you just clone this template and start or is it Oh, yeah. If you if you if you do not want to use a CLI, if you're not installing Python for whatever reason, totally fine. Uh we have releases. +(15:23) So, if you go to Spectit templates, uh and by the way, we support Copilot, Cloud Code, and Gemini CLI. So, we are, you know, spanning the platforms here. Uh but you can also download these templates. They're they're zip files and just use them directly with your project. So, you don't actually need to jump through the hoops of the CLI. Well, time to uninstall Python and UVX. +(15:40) Get out of It took me eight days to figure out how to get my Mac terminal to work. Now, now I have to use it. So, yeah, now now you have to use it. But, uh, the easiest way to do this is to essentially use specify through UVX. Uh, and now D. Yeah, sure. Specify because it's a spec kit. Specify. I This is up for debate. +(16:05) This is up for debate. I'd say like we we had that conversation. It's I call it specify. Some people call it specify. You can call it whatever you want. It's like specify means something very different than No, it doesn't. Same word. All right. Well, right. Word for us all to miss. This is the show where we get nothing done. +(16:27) Yeah. The GIF and GIF the debate all over again. Um, so we use specify init. Uh, and then we're going to give a project name. I'm going to let it cook. uh test. All right. And when we do this, we're going to get the nice little installation prompt to get the the cool ASKY art. Oo. Did you spend a lot of time on that, Dan? Uh just just a little bit more than the rest of the CLI. +(16:57) Uh but um you could just like you would in, you know, if you use any of the existing AI LLM CLIs, you can use your keyboard to navigate through the agents that you want to use. Uh, and in our case, we're going to use C-Pilot because of course we love Copilot. And we're going to say yes. And then it's going to initialize our project. +(17:14) What this does, all it does is just pulls a template. It pulls the latest release, unzips it locally, puts it in a folder, bootstraps a Git repository if you do not have a Git repository. And by the way, you can do this in an existing project. You don't actually need to start this off in a whole new folder. But what do you have stuff to the existing project? Totally. Yeah. +(17:32) If you have an existing repo, just add like what I just did in the I use let it cook test as a name. You can just add the name of the folder of the git repo that you're using and it was just going to bootstrap all that in that repo. Or if you're like me, just put it in the wrong place and then copy and paste or put in the wrong place and copy. Yeah, it's fine. +(17:50) Again, these are all this is scaffolding. Like none of the stuff is immutable where you're like, ah, now I put stuff in a registry. Like it didn't do any of that. So, uh, we're going to go to our folder here. This is C and test. Okay. And in this folder, if I do tree, you'll notice that actually bootstrap a bunch of stuff. +(18:10) So there is like some memory and we'll we'll look at this in a second. Some helper scripts which also they're they're shell scripts by the way. They you would need WSL or Linux or Mac OS, but um you're in WSL currently. I'm in WSL right now. I'm using auntu. That is the Windows subsystem for Linux. I am working on PowerShell scripts. So, it's coming. Yeah. But for for a test is just shell for Sean's about to get real bent out of shape. +(18:33) I'm I'm already bent out of shape. If it's not a PS1 file, get out of here. Yeah. Um and there's a bunch of templates for what we're actually going to do. And I'll I'll show this in in VS Code. But, uh I'm actually going to do tree and a to see that there's actually missing pieces here that I'm going to scroll up to the very top past all the git stuff. And then we have the GitHub folder here that has three prompts. +(19:00) Specify plan and tasks. And we'll use them in action. And this is the stuff that you saw here when specify bootstrapped the project. It actually hinted it's like and open Visual Studio Code and use specify plan and task commands. +(19:19) That's you know we use the existing built-in capabilities of VS Code to pick up prompts as slash commands which is kind of neat. I I really like that that that once I talked to Pierce about this is a made it a no-brainer. Just plug it in. So, we're gonna WSL is called Weasel. No, it's not. No, it's not. No, no, no, no, no. Absolutely not. Now, it will be forever, I guess. I guess I'm going to call it that from now on. Like, I'm going to be getting a call from the Windows marketing team if I use that. +(19:41) Like, yeah, this show's going to Thanks. Thanks. Now we're cancelled. So, we did get a question earlier that says, you know, you know, we're on VS Code, but can you use with Visual Studio? And the answer is like, yeah, you can just if it's prompt files like you showed, you can run prompt files inside of Visual Studio as well. They're prompt files. +(19:59) I mean, you could take what's in the prompt and I guess run it anywhere technically. So, yeah, I mean I mean none of the stuff here is actually designed around VS Code as experience. Like you you can use, you know, Sublime Text if you so desire. It's just the experience. I only use Notepad. So just copilot in notepad so it'll run it. +(20:16) You know it's like I I saw people write like Linux kernel contributions in like literally just a plain text editor. I was like what what happened in your life that led you there? Joy. Why? Why joy? Why do you hate happiness? Um so um as I mentioned so we have the prompt files we have the specify uh which again just defines like what needs to do what the what the agent needs to do and this is essentially for defining that PRD James that you were alluding to this this the specify command is for that feature specification that outlines the what and the why. We're not focusing +(20:51) on a technology and of course we are using our helper shell scripts here. So you you can you can tell that because when we create a new feature, we want to spin up a new branch for it. We want to make sure that it's actually in a new folder that the spec is actually written. So it's not polluting the rest of your codebase. +(21:11) So all all it does is just kind of defines the logistics of the the feature spec. Then there's the plan. The plan is our how piece and this is building on the feature spec is how do we actually build this? What tech stack do we use? What databases? What you know performance things we need to consider? And it's also grounded in this thing that we call the constitution. +(21:29) And constitution is kind of a can sound like a scary thing, but the constitution essentially is a set of non-negotiable principles for your project. So if I'm building a web application and I want to make sure that my organization is always using tests, I I am always shipping code that is grounded in read red green refactor cycle. Like I I can enforce this with a constitution. +(21:53) Like the constitution is essentially non-negotiable. Whatever you build, whatever plan you establish, whatever task you break down, this document always has to be followed. This is there's nothing in it, right? There's nothing in it because we not yet, we haven't started anything. Okay. Okay. Um but this is distinct from things like we've seen before with cloud MD like agents. +(22:16) mmd because those are kind of like giving you the context of the project, right? Oh, this is a web application and you can open these files and you can use a CLI tool. This is specifically around the fact that these things should always be followed. Um and then the last one is the tasks prompt file. So this is where we just break it down all all the plan that we have into task and it gives you the logic for how to actually do that. +(22:36) Right? So um it references a bunch of documents that are going to be created post factor that we're going to see in a second. And as I mentioned like it pulls in helper scripts and it pulls in some of the templates that we're going to use for the plan for the spec and for the tasks. So again all this is scaffolding. It's markdown files and shell files. That's all. +(22:56) Yeah, like it's it it's really like the CLI doesn't do any magic other than like putting this stuff in your folder. But um anyway, let's let's see this in action a little bit. So, I'm going to open our favorite agent mode here. I'm going to be using GPT5. And by the way, depending on which model you're using here, I don't know like you guys, what's what's your model? What do you prefer for coding? Well, I was about to ask, Dan, because you're going to get quite different results depending on what model you use here. I would I would expect that that Claude probably works the best here because there's so many different +(23:25) instructions and it's really really directable. Um 4.1 is my model of choice, but I don't know that 4.1 is going to be able to to do what what needs to be done. I'm curious. I'm a five five mini is my jam. So five is really good. Five is underrated. Like John and I John Lamb and I talked about this and like GBT5 is really really good at coding lately. I actually haven't touched on it in a long time. +(23:51) After all, I I default I default to five and then if I really need some vast exploration, if I want someone to hitchhike through my code, then I I pull up Claude and I say, "Let's yeah, let's go on a backpacking trip through my my code base." Yeah, you you could absolutely do that. +(24:08) Uh, and by the way, this is this is also the beauty of the spec driven development is that you can apply this process to an existing codebase and then basically pull in the context from your code and have the spec be on top of the existing codebase and conventions and everything that you've created. But anyway, uh let's let's get the constitution rolling here. So, um because I'm we have limited time, I'm not going to write the constitution from from scratch. +(24:31) And let's just ask GPD5 to help us. And we're going to say let's update this constitution for a web application set of constraints and let's see what it comes up with. I I'm genuinely curious. I have not done this before. Like all the constitution documents that I put together were basically just me putting constraints. +(24:53) So we'll see if agent mode can come up with some, you know, decent set of requirements here. So is this the first thing that you would actually do is like update the concept? Oh, okay. Okay. So you so you're not even running the scripts yet. You're just like no not yet because I just want to make sure that like I'm grounding my project in some set of kind of non-negotiable principles and you know typically again for this is helpful when we talk to enterprises what things that they do is like oh I only want to use the Azure CLI for deployments like this. This would go here. I only want to use Azure services +(25:23) like functions and app service and whatever else like this stuff goes here. You're essentially defining the hard constraints that you cannot get out of whatever you're building and it's sharable. So you can use this across your org. You can share with other teams and they can reuse it. +(25:40) So it's not something that you necessarily need to put together every single time. It just happens that in our sample we don't have anything because we don't know where you're going to be building. Yeah. Where is it pulling these constraints from? So these constraints right right now it's going to just pull it from its training data. Okay. Right. +(26:04) Like but you would imagine that in your organization you might say like your your CTO says like you always have to use Nex.js for every web app. Right? You just write this manually. This is like when I was talking about the app factor. It's like we are doing this we use this you know we use this deployment method. We use you know uh GitHub actions. We use blah blah blah. We this is like this is like our color you know this is our branding. This is our color. This is blah blah blah. Right. Yeah. +(26:26) And look, it actually did come up with like a decent set of requirements. If we look at the like it userentric accessibility first, like that's important. That's nice. Secure by design, lease privilege always like all right. Yep. Maybe for our like our our podcast landing page is not that important, but like you would imagine that for an or like sure. +(26:44) Um and because in the constitution template we had examples, it actually fills it out like based on those examples, which is kind of neat. So we have the constitution. Let's actually get it to write us the spec. So we're going to use the slash command. I'm going to use specify. Going to just call it specify from now on. Like this is just You're welcome. Like Yeah. Thank you. +(27:02) I'm really good at naming as I'm going to say specify whenever I use the word specify in any context. Just let people correct me. Can you specify what you mean exactly? Uh what I'm talking about here. So So when we define a spec, we use the the slsp specify command. We essentially define as I mentioned several times, it's the what and the why. +(27:22) So you're not focusing yet like oh I want to use net or nextjs you're saying I am building a podcast landing page make it modern dark theme is it going to be a podcast landing app so for for the what is it for is it like a podcast app like where people can like download stuff or is it like I am a I am a podcast like for the podcast yeah I'm building a podcast landing page for my podcast the vs code insider podcast. All right. +(27:55) I mean, you you told me to specify. Yeah. Yeah. And by the way, that's actually a very good point. The more concrete you get here, the better. Like the the results, right? Like if you if you have like a vague like, oh, I'm just building a landing page. Like it's going to produce like garbage results because like it's going to just fill in a bunch of assumptions for you. But the more specific you get here, the better. +(28:14) So podcast landing page for VS Code insiders. Make it modern. dark theme speakers on the main page for featured conversations and you got the specify commands because and was asking in the chat how' that happen in case you're joining late when Dan ran the command he asked did he want copilot gemini or claude CLIs and what it that did is it scaffolded out in this case for copilot thegitub/prompts and it put those prompts inside of in this case VS code picks them up automatic in that folder or Visual Studio would as well. Yeah. +(28:50) Yeah. At least 20 mock episodes. All right. So, uh I'll do this. It's good enough. So, you'll notice that that the follow instructions when I when I type this into chat, it says follow instructions specify.prompt. So, I use a slash command, but it knows because I have the GitHub folder here that it's just going to, you know, follow the instructions from the the the actual prompt file. +(29:14) It's the slash command is a prompt file. That's all it Well, would you would you so here you're scabbling on something new, but if this was in an existing application, would you do this like I I'm adding a new feature to this applica. If I'm just adding a new fe Okay, so if I'm adding a new feature, I would I would spec specify the feature. Exactly. It's Yep. +(29:32) It's it's very much universal. And notice that actually ran the bash script, the helper bash script for actually bootstrapping things properly here. So now I have a specs folder with a 001 feature name because it did not properly identify the feature, but that's okay. Um, there's my terminal where it actually ran and now it's just working on the actual spec file. +(29:49) It pulled in the template and the template is just blank because it doesn't have any requirements just yet. Uh, but it's going to fill it out and GD5 I recognize the functional requirements. That's that's how I do my PRDS. Yeah. Yeah. Yeah. So, this does it for you automatically because we have the template. +(30:06) Um, and GBD5 can be a little slow in this regard because it just has to fill out everything from like in one go, which can be, you know, depending what you like, what you don't like. Um, but it it I I use GPT5 and it work just just fine in terms of producing the code and the output. So, um, let's see. Report. I actually like this little task box. Yeah, that's the jam. All right. So, we're working on improving those too right now. Yeah, it's it's it's really neat. +(30:32) Like I tracking the status of that is Yeah. So, uh it actually noticed that it actually focused on things like acceptance scenario, user story. So, stuff that typically PMS would write that it just did it by itself. And this is not immutable. You can go in and change things here. +(30:50) Um but it did come up with functional requirements like filtering or discovery of episodes by tag or thematic grouping. Like I didn't type any of the stuff, right? Like um but it's kind of nice. So I see that there are some things that need clarification and specifically one of the things that is very important about spectrum of development is that this is not just vibe coding in terms of like oh I'm just going to vibe the spec and I'm just going to vibe the plan. You still have to review it. You still have to look and make sure that it it produces the right +(31:15) things to help with this. We also added this thing called the acceptance checklist that you kind of have to go through and make sure that it actually fits the requirements that you've established. So um in in our case we have requirements around things like content quality and requirement completeness and for example you cannot move forward until no need clarification markers remain. And we we saw a couple of them. +(31:42) So because I'm lazy I'm just going to say fill in uh the clarification hallucinate answers as best as you think. Uh so let's let's just have it do it like because this is a non-production application. we're not worried. But you would imagine that me coming in here as an enterprise saying like, "Oh, yeah, I do need to specify the the latency requirements for my project. +(32:06) Like I can't really let the LLM guess that for me, but you know, for a landing podcast page, that's fine." This is cool because like um you know, Lee was asking here like about the green field projects. I have feedback flow which I 100% vibe coded and what I ended up doing was doing a lot of the documentation after like, oh, you just implemented this feature. +(32:22) do, you know, after I've worked for hours to get it right based on what I had in my mind and we worked together, me and in the the GPT. Um, in this case, I could actually just do this on a new feature that I'm adding. I think that's what that's what I'm going to try now is like, you know, I do a lot of new apps, but then I could see myself exactly what I've done here because I've done this sort of process, but not Yeah. in as much detail. Uh, for sure. +(32:45) I like I like your frame like we were working me and the GPT our best friends me me and co-pilot and GPT and Claude and all they're all in my and this is where I get I start to get skeptical spectacle spectacle and I would like to tell you here's why yes because when you are specking out a green field app especially right which is less common you don't know what you don't know correct this is this is how programming works you think that you're going to do something one way you try to do it that way. You realize, oh, that's not actually going to work, but it's kind of +(33:16) going to work. So, I'm going to need to to shift slightly, right? And so, you can't. In theory, if you could tell the model upfront everything that it needed to know, it would give you the right answer. Prompt engineering is just giving the model the answer that you want. But we can't. +(33:33) That's really, really hard to do. Yes. Like, you would have to spend hours thinking about the feature, examining every edge case. Yeah. And I just don't I just not sure who out there number one can do that me. But number two, more importantly, like who wants to do that? I think I think a lot of businesses do. I think a lot of like PMs, a lot of a lot of I mean a lot of like I think a lot of folks today like work off of a ticket system and they they refine and they put in specifications into tickets before handing it off to the engineers. Now, I mean, I think this is really big because this is like a huge thing, but +(34:11) my assumption if I had a small feature, it'd be a small specification hopefully. I I will also add to this that you're absolutely right, Burke, that this this is the kind of stuff where it's like you you you don't know what you don't know, and if you go down this path, the kind of the wrong assumption here is that you need to have everything from the get-go and then once you start, you cannot go back. But you can. So once you actually go to the product and it builds the thing and you realize like ah crap I did not +(34:37) implement the the login flow the way I wanted you can just ask it to reimplement it and encode that in the spec right so like you can you can go essentially go back and say oh right the login flow doesn't work the way I expected it to go and go and redo this and make sure that this is properly reflected like it's not a oneshot thing yeah and that makes sense I guess I just in my own experience here Den what find happens is that I create these plans and specs and then somewhere in the process I'm just like, "Yeah, it looks good +(35:07) enough, right?" And then I just send it and then it just cooks up a bunch of code that I don't understand and then like four iterations later I have no idea what's happening in the code of the project. I'm just clueless, right? I'm just like plan spec. Yeah. Right answer. Realistically, this is the kind of stuff that like you you you would end up in a state of I need to be able to break this down for the model in and that's what we're trying to do in these like composable chunks. It's like you're not just writing one document and let it do it. Just like, oh, I need this +(35:39) other feature. Let me just add this other specific feature requirement. That that's that's kind of what it is. I wonder if maybe the answer here is like breaking your tasks down into very like the smallest possible bingo. That that's exactly what specify does. Yeah. Um so the second command is where I can do plan and essentially this is where I can say like plan and uh for plan use next JS old data is mocked because we're not using a database. +(36:11) No databases or six minutes then to I know I know we we'll get we'll get to this we'll get to this. Uh so um all all of this stuff like it it's essentially it's a it's a process and by the way like when we talk about the process here the stuff that you see the scripts the templates all of this is very much experimental like if if Burke James like you guys go in and try this be like Dan this is a pile of garbage like this does not work for what I'm trying to do and it just does not produce right let us +(36:41) know like this is the kind of stuff that we we actually this is why we we released it to begin with is we want to get feedback we want to get input from folks and see like where it works and where it doesn't. And if you're trying to build a web app, you're trying to build an iOS app and this is not working. It's producing incorrect output. +(36:59) Like we we'd want to know that because we've experimented extensively internally on like prototypes and projects. I actually like built a prototype for one of the exact demos with this just the other week and it worked like really well. Wow. But I'm just one person, right? Like I'm I'm not I'm not either of you. I'm not the community watching this. +(37:18) So very much like this is not like a final state like what you see here is going to be forever this way just to caveat this that makes sense. Now all this stuff that is generating this spec and research stuff fuel was asking like does that gets checked in as part of your codebase basically? Yeah absolutely because the spec becomes yeah the living breathing document that you can use and your team can then refer to and look and say oh I get how they landed on this feature. +(37:48) I understand why uh that that's and again because once you have the spec you can easily go and reimplement it. You can just rebuild it from scratch because you have the spec. That makes sense. And then yes are saying like when you add a new feature to the spec ideally you have the specs for the other things. So it should reliably kind of know how to update and what it needs to update and search through specification documentation. +(38:06) Yeah. Yeah. Exactly. And and this is the kind of stuff where you you you end up with a a set of kind of artifacts that are very much reusable by the team. And in our case, like the research here, it's pulling this from the training data. Uh and I actually need to use Burk's like beast mode probably here to do some like force it to go and do some Google searches for um what the right framework should be like for Nex.js, right? Oh, Burke, you're muted. +(38:32) I am I am muted. Whoops. Uh, beast mode doesn't work great with GPD5 because GPD5 doesn't really do well with like longer prompts, right? So, because it gets appended to the end of the system prompt, it tends to just ignore all of it. Yeah, because the beast mode prompt is pretty pretty big, right? Like it's pretty it's size and it's meant for 41. +(38:55) It's specifically formatted for that model. Although Claude is so directable that it will also pay very close attention. But yeah, y'all chat have not had great luck with uh with GT5 and beast mode, but but I love beast mode because I've actually experimented with it like the other day and it was totally fine. +(39:12) Um and it the fact that it forces to go and search is great. And this is something that I love about like claude code like if you folks have used it like you know like oh let me go and search this but like it does the research for the phases. It does the breakdown and notice that in my plan I'm I'm going to keep all this. +(39:29) And really quick too, someone was asking in the chat like you ran the plan. Did it how does it know to grab that information from the specify specify step. Oh, because all this is encoded in the the So if you look at the plan, right, it it actually encodes a lot of this information, right? So it says run the script, read analyze the feature spec, and it knows where the feature spec is because we just created it. Like it's it's in the conversation history. +(39:53) And then it also grounds it in the constitution as we mentioned like you know read the constitution to understand the requirements. So this is the stuff that we know are non-negotiable and then apply the template right so it's all like it's basically chaining prompts it's it's chaining prompts together and chaining a lot of the script activity together as well. +(40:07) Um, and then lastly, once you have the plan, we just say tasks and then uh break down the plan into tasks. And this is going to create the the task that Burke was talking about, like the the smallest chunks possible for every single section of the plan. +(40:25) So, what was created in the plan really quick cuz I see on the spec feature while that's cooking. Yeah. So, the the planet has again technical details, technical design. Uh so if we look at the kind of the layout here, it outlines the project structure. It proposes the the source code structure as well, which is kind of again neat for for me to see. And if I like, oh actually my teammate does not maintains SRC or SLS SRC, you you can update this very very easily. +(40:50) Um and then uh yeah, so like testing non-negotiable because we encoded that in a constitution. It it is required. So it puts this observability versioning. Delete that. Just delete that. Yeah, of course. No, we don't need that. Um it has the reference to again the kind of the research document but outlines like what is the oh using Nex.js like let me talk about Nex. +(41:07) js and if we go to the research document that it produced you'll notice that it it talks about use next.js app static generation for landing blah blah blah and all this stuff. So it it it cross references a bunch of these things in the plan to essentially say like this this is this is how I'm going to approach building it. +(41:25) So remember the spec is the what and the why. This is the how. And it has all these kind of requirements constraints like mark independent UI components and you know setup and tooling which is required for this because we're using TypeScript and X. +(41:42) js but yeah it's it's technical requirements basically and you can adjust these as well because all the stuff gets checked into the repository all of it. It seems like some of this stuff Dan you would want across multiple projects right like Oh absolutely yeah you would some sort of a where you could just pull it in to new projects automatically. Right. +(42:00) Right. Right. So like I mentioned the constitution is a good example which is like my team is always building web apps that follow these constraints. Just reuse this like I don't need I don't need everybody to write their own constitution document. They can just reuse this. So but to the point of task so it seems like it finished. +(42:18) So we can go and look into tasks and you'll see here that let me just close this. There's create front end add typescript like it it basically broke it down into different chunks. write schema validation test for episodes like these are workable chunks that it can now tackle. So I don't need to wait for it to go in and say, "Oh, it's it's it I mean it's still going to be non-deterministic, but the tasks help it steer it in the right direction and say like, oh, you need to implement the audio player wrapper component and now you do this and now you do this." And it's like it has very concrete instructions instead of guessing. +(42:49) And I I tried to do some uh yolo spec driven development by myself, you know, because I couldn't get stuff running on my on my Mac in time in the morning. And what ended up happening is I was going back and forth with like my PRD and this and that. +(43:06) And because I'm having it generate all the code, I didn't have time to like review what is in like and this was like my my pet tracking application for my dog. Um was like okay like what actually isn't a pet? Like what information they need? Like how is the user configured? What is this? So like it went off and then I spent a bunch of time like actually fixing it and trying to go back and forth that now I think I'm just going to throw it all away and start over with this because at least for me I can understand and say okay like here is what's in this part and here's what's in this thing. Yep. Exactly. +(43:32) Now now Dan Dan I would like to ask a question here. Um yes. So one of the things that you're actually fighting now is the fact that um GBD5 and Claude are both crazy slow and you've got a long conversation. So you're hitting summarizing conversation history which is also slow. Something we know about. We're working on it. Now here's my question. +(43:56) GBD5 Mini and 41 are really really really good at following very specific instructions. If you tell them exactly what to do, yeah, they can do it. What they are not good at is when you give them a broad set of constraints and they have to try to fill in the blanks. My question is could you switch to GPT5 mini here and have it implement the tasks? Yeah. The the model here of result. Yeah. +(44:20) Yeah. The model here is your choice like I'm not bound with a GP. I'm just using GP5. I'm just in your in your experience in my experience like I like I I have noticed that GBD5 and the mini variants can be very good. Exactly as you mentioned like they're precisely following your instructions and not going off the rails. +(44:38) The one thing that actually is helpful to have the constitution and a lot of these documents for is for like sonnet models because they go off the rails super quick. They're they're overeager. They're very eager to go and do a bunch of stuff because I mean they they were like rled in a bunch of code. So they like coding. +(44:55) They're going to just just let me code a bunch of stuff you did not ask for. Um I see you don't have a podcast. Let me create that podcast. Yeah, exactly. Like you're absolutely right. I did not think about the podcast. Uh, and you know what's interesting is I I've generated MP3s with you. I I tell Claude, "Do not ever say you're absolutely right." And it will say it no matter what you do. +(45:14) There's nothing you can do to get it to not You're absolutely right. I should not be saying you're absolutely right. You're absolutely right. You are absolutely right. But uh so yeah the the model and also I'll say like experiment with the models like try out different like switch them and see how the implementation looks like because what I also noticed if you use GPT5 sometimes what what sonnet is really good it also can be creative. +(45:38) So if I like in my initial prompt when we use specify actually asked to like make it modern if you look at the sonnet output it's going to produce like a site that can be very like dark theme some like maybe like overlay some really cool stuff. GBD5 will produce potentially like a a white page that is just like bootstrap style UI. It's like, oh yeah, it's modern. I follow your instructions. +(46:01) But like it's it doesn't have that same creativity in it. So those kind of things matter. And again, you you have to test it. You have to try it and see like what what it produces, what it works, what doesn't. For the spec pieces and the task pieces using precision models like GPT5 are like perfectly fine. +(46:19) But then once you have this, once you have the spec, the tasks, the plan, you can experiment with different models and see what outputs you like best. I'm really excited to see what this actually turns out here. Yeah, it's going to like I don't know how long it's going to take, but um it is cooking. It is it is cooking on something. See five minutes late to your meeting with Satcha or whoever it is. That's that's fine. Satcha can wait. +(46:38) Yeah, that's not at all a career limit. Sorry, Sati. I do not agree with that if you're watching this podcast. If anything, yeah, it's just like we were sort of B James and I were just building a podcast website. We just really need We're just cooking. It's created 25 files. +(46:55) So, I mean, and the other stuff too. Oh, now it's creating your your contracts. So, it took like put like some playright and some just configs in there as well. Oh, it did create it created a Yeah, play playright test config. It has all the stuff. Icons. What icon pack is this? Uh, this is the cat puin. The what? I think it's called the cat pooin. Like the cappuccino, but there's cat puccino. +(47:18) So it's like interesting. It I've never heard of that one. Yeah, it is. Let's see. Install. Yeah, cat poo for VS Code. I got to get that material is like the goto. So yeah, you're the trend. Yeah. Yeah. I I I'm I'm not really a trend follower here. Um, you're the trends setter, Den. Obvious. I love this, man. I want to try this. Like, I'm going to do this as soon as this is over. Seriously, I've got stuff I'm working on today. +(47:45) I'm absolutely doing this. And like I said, it's not perfect. I'm sure there's things that are going to be broken. I'm sure there's things that are going to be not working as you expect. I want to know that. Open an issue in GitHub. Ping me directly on Blue Sky or Mastadon or LinkedIn or wherever you find me, wherever you find this podcast. Uh, we're again, it's it's an experiment. We're here to learn. +(48:03) Yeah. Harassed in online. harass. Yeah. Well, that's I should not be saying that. Like, subscribe. Quity, positively. If you want quality, if you want quality content, which this uh live stream is not, follow Den because Den's busting quality. I'm just Why? Let's just be honest with ourselves. +(48:24) Burke, I'm not like like Claude over here with self-gratification. Oh, you're totally right. This this YouTube stream is awesome. It is. For once, I'm not talking about MCP, right? Like I I can talk about things other than MCP. You've moved on so quickly. No, I'm still an MC. What do you I'm still an MCP. Is just this. I'm doing both. I'm doing both. Wow. Man of multiple talents. +(48:48) Someone's using this live. It's happening. Feels good. Oh, wow. Using it right now. Let's go. Let's go. Feels good. Feels good. That That's good. It's like, you know, it's got good It's got good kill better than feels bad. +(49:04) I see Hashim was also mentioned like it would be interesting to use claude for the design task and GPT5 mini for or GPT5 mini for precise stuff like writing test and yeah absolutely I mean again try it out like the the easiest way to see what works is to swap models and just see see what works for your scenario cuz like I've for web apps by the way also depending on what you're building I've seen if I'm building a desktop application for Windows like I'm building a console app like GBD5 is excellent if I build a web app I generally get better results with sonnet but not as much if I build like Windows apps. So, your mileage may vary +(49:35) here. How many packages are you installing? There's a there's a bunch. And also, really cooking on those. It is really Yeah. Like I'm I'm sure this is totally not going to bring some like super vulnerable like hallucinated packages. No audit. It's like no audit. No, no. +(49:53) I I like the no audit that basically like I don't care about vulnerability. Just pull whatever. Uh yeah, we did not encode that in the constitution that it should audit things or we can look at the source pricing of the top models. Well, we could talk about that while this cooks a little bit. So you have your premium requests which are So let's talk about included models which is GBT5 mini 41. Is 40 +(50:21) still in the picker? It's still in the box. Yeah, still in the picker. 40. like we have and for a limited time Grock fast one is there but that I believe will be moving to a 0.25 multiplier. So those are your included models which means that they're they're unlimited although if you hit these enough you will get rate limited right like you can't burn $5,000 of GPU on 41. Sorry. Mhm. +(50:48) And then you have your premium models which are each uh these are called um each like um turn session with the agent is one is it turn no the a the turn is what the agent does. So so so uh like when when when Den did a plan that was the start and then when it stopped and it was like I'm done. That's one premium request. Correct. +(51:12) one premium request and I think if you're on the pro plan you get 300 of those pro plus 1500. So what you want to do and that's why I was asking Dan like if ideally what you do is you for people that are trying to ideally you would have this whole process automated and you wouldn't review any of it. Yeah, you could. Or you would just like tell the chat to like after you get to this step, just wait for my wait for, you know, five minutes, but don't stop. Just keep going. Yeah. I'm just trying to show people how to game the system. +(51:39) Yeah. It's a good experiment to try this. Yeah. So, anyway, that's that's the pricing. It's pretty simple, y'all. It's just priced on on agent sessions. You don't have to worry about tokens and all that stuff. Very cool. Well, this is spec kit. Like, you know, it's still here because the spec the spec kit part of it's done. Now, you just told it to implement. Now, this is just now I'm just waiting. +(52:04) I'm hand completely hands off. I'm just waiting for it to go and like build the stuff for me. So, and I know you got to move on, Dan. You want us to wrap it up here? I feel like the folks who joined today, y'all are the lucky ones because this is awesome. You just maybe turned Burke on to this, which is good. I'm going to go give this a try as well. +(52:23) What we'll do practical is Den will commit that code. So later today I'll go back to the YouTube page youtube.com/code and then look at this episode so we get our view count up. Like and subscribe and then in the show notes below we'll put a link on there and we'll make sure we we tweet it out. So follow Den Burke me VS Code on the socials. +(52:46) Maybe we'll have Olivia post it out as well on on as a followup of this post as well. Den go you're running out. Yeah. And I'll I'll commit the repo. I want to share what the outcome of this will be. I'm excited because we have a podcast website that we we pay for. So for you also there is a VS Code Insiders podcast. That is a real podcast that you can subscribe to on your favorite podcast application behind the scenes there. +(53:09) Um Dan, thank you so much for coming and talking through everything and showing stuff off and I can't wait to see when this cook finishes. Thank you for having me here. Awesome. Well, Burke, as always, an honor. Happy coding everybody. out. Bye. Bye. Bye. [Music] [Applause] \ No newline at end of file diff --git a/0-Docs-Yensy/github.blog-Spec-driven development with AI Get started with a new open source toolkit.pdf b/0-Docs-Yensy/github.blog-Spec-driven development with AI Get started with a new open source toolkit.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0e3eb34b42cef07e9fe8a1777dab0bd963c01baa GIT binary patch literal 108371 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

    Ne^jv69?it; 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 PcehYNbU}hO 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

    | +| **Creative Exploration** | Parallel implementations |
    • Explore diverse solutions
    • Support multiple technology stacks & architectures
    • Experiment with UX patterns
    | +| **Iterative Enhancement** ("Brownfield") | Brownfield modernization |
    • Add features iteratively
    • Modernize legacy systems
    • Adapt processes
    | + +## Experimental Goals + +Our research and experimentation focus on: + +### Technology Independence +- Create applications using diverse technology stacks +- Validate the hypothesis that Spec-Driven Development is a process not tied to specific technologies, programming languages, or frameworks + +### Enterprise Constraints +- Demonstrate mission-critical application development +- Incorporate organizational constraints (cloud providers, tech stacks, engineering practices) +- Support enterprise design systems and compliance requirements + +### User-Centric Development +- Build applications for different user cohorts and preferences +- Support various development approaches (from vibe-coding to AI-native development) + +### Creative & Iterative Processes +- Validate the concept of parallel implementation exploration +- Provide robust iterative feature development workflows +- Extend processes to handle upgrades and modernization tasks + +## Contributing + +Please see our [Contributing Guide](CONTRIBUTING.md) for information on how to contribute to this project. + +## Support + +For support, please check our [Support Guide](SUPPORT.md) or open an issue on GitHub. + + + +# Installation Guide + +## Prerequisites + +- **Linux/macOS** (or WSL2 on Windows) +- AI coding agent: [Claude Code](https://www.anthropic.com/claude-code), [GitHub Copilot](https://code.visualstudio.com/), or [Gemini CLI](https://github.com/google-gemini/gemini-cli) +- [uv](https://docs.astral.sh/uv/) for package management +- [Python 3.11+](https://www.python.org/downloads/) +- [Git](https://git-scm.com/downloads) + +## Installation + +### Initialize a New Project + +The easiest way to get started is to initialize a new project: + +```bash +uvx --from git+https://github.com/github/spec-kit.git specify init +``` + +Or initialize in the current directory: + +```bash +uvx --from git+https://github.com/github/spec-kit.git specify init --here +``` + +### Specify AI Agent + +You can proactively specify your AI agent during initialization: + +```bash +uvx --from git+https://github.com/github/spec-kit.git specify init --ai claude +uvx --from git+https://github.com/github/spec-kit.git specify init --ai gemini +uvx --from git+https://github.com/github/spec-kit.git specify init --ai copilot +``` + +### Ignore Agent Tools Check + +If you prefer to get the templates without checking for the right tools: + +```bash +uvx --from git+https://github.com/github/spec-kit.git specify init --ai claude --ignore-agent-tools +``` + +## Verification + +After initialization, you should see the following commands available in your AI agent: +- `/specify` - Create specifications +- `/plan` - Generate implementation plans +- `/tasks` - Break down into actionable tasks + +## Troubleshooting + +### Git Credential Manager on Linux + +If you're having issues with Git authentication on Linux, you can install Git Credential Manager: + +```bash +#!/usr/bin/env bash +set -e +echo "Downloading Git Credential Manager v2.6.1..." +wget https://github.com/git-ecosystem/git-credential-manager/releases/download/v2.6.1/gcm-linux_amd64.2.6.1.deb +echo "Installing Git Credential Manager..." +sudo dpkg -i gcm-linux_amd64.2.6.1.deb +echo "Configuring Git to use GCM..." +git config --global credential.helper manager +echo "Cleaning up..." +rm gcm-linux_amd64.2.6.1.deb +``` + + + +# Quick Start Guide + +This guide will help you get started with Spec-Driven Development using Spec Kit. + +## The 4-Step Process + +### 1. Install Specify + +Initialize your project depending on the coding agent you're using: + +```bash +uvx --from git+https://github.com/github/spec-kit.git specify init +``` + +### 2. Create the Spec + +Use the `/specify` command to describe what you want to build. Focus on the **what** and **why**, not the tech stack. + +```bash +/specify Build an application that can help me organize my photos in separate photo albums. Albums are grouped by date and can be re-organized by dragging and dropping on the main page. Albums are never in other nested albums. Within each album, photos are previewed in a tile-like interface. +``` + +### 3. Create a Technical Implementation Plan + +Use the `/plan` command to provide your tech stack and architecture choices. + +```bash +/plan The application uses Vite with minimal number of libraries. Use vanilla HTML, CSS, and JavaScript as much as possible. Images are not uploaded anywhere and metadata is stored in a local SQLite database. +``` + +### 4. Break Down and Implement + +Use `/tasks` to create an actionable task list, then ask your agent to implement the feature. + +## Detailed Example: Building Taskify + +Here's a complete example of building a team productivity platform: + +### Step 1: Define Requirements with `/specify` + +```text +Develop Taskify, a team productivity platform. It should allow users to create projects, add team members, +assign tasks, comment and move tasks between boards in Kanban style. In this initial phase for this feature, +let's call it "Create Taskify," let's have multiple users but the users will be declared ahead of time, predefined. +I want five users in two different categories, one product manager and four engineers. Let's create three +different sample projects. Let's have the standard Kanban columns for the status of each task, such as "To Do," +"In Progress," "In Review," and "Done." There will be no login for this application as this is just the very +first testing thing to ensure that our basic features are set up. For each task in the UI for a task card, +you should be able to change the current status of the task between the different columns in the Kanban work board. +You should be able to leave an unlimited number of comments for a particular card. You should be able to, from that task +card, assign one of the valid users. When you first launch Taskify, it's going to give you a list of the five users to pick +from. There will be no password required. When you click on a user, you go into the main view, which displays the list of +projects. When you click on a project, you open the Kanban board for that project. You're going to see the columns. +You'll be able to drag and drop cards back and forth between different columns. You will see any cards that are +assigned to you, the currently logged in user, in a different color from all the other ones, so you can quickly +see yours. You can edit any comments that you make, but you can't edit comments that other people made. You can +delete any comments that you made, but you can't delete comments anybody else made. +``` + +### Step 2: Refine the Specification + +After the initial specification is created, clarify any missing requirements: + +```text +For each sample project or project that you create there should be a variable number of tasks between 5 and 15 +tasks for each one randomly distributed into different states of completion. Make sure that there's at least +one task in each stage of completion. +``` + +Also validate the specification checklist: + +```text +Read the review and acceptance checklist, and check off each item in the checklist if the feature spec meets the criteria. Leave it empty if it does not. +``` + +### Step 3: Generate Technical Plan with `/plan` + +Be specific about your tech stack and technical requirements: + +```text +We are going to generate this using .NET Aspire, using Postgres as the database. The frontend should use +Blazor server with drag-and-drop task boards, real-time updates. There should be a REST API created with a projects API, +tasks API, and a notifications API. +``` + +### Step 4: Validate and Implement + +Have your AI agent audit the implementation plan: + +```text +Now I want you to go and audit the implementation plan and the implementation detail files. +Read through it with an eye on determining whether or not there is a sequence of tasks that you need +to be doing that are obvious from reading this. Because I don't know if there's enough here. +``` + +Finally, implement the solution: + +```text +implement specs/002-create-taskify/plan.md +``` + +## Key Principles + +- **Be explicit** about what you're building and why +- **Don't focus on tech stack** during specification phase +- **Iterate and refine** your specifications before implementation +- **Validate** the plan before coding begins +- **Let the AI agent handle** the implementation details + +## Next Steps + +- Read the complete methodology for in-depth guidance +- Check out more examples in the repository +- Explore the source code on GitHub + + + +# Documentation + +This folder contains the documentation source files for Spec Kit, built using [DocFX](https://dotnet.github.io/docfx/). + +## Building Locally + +To build the documentation locally: + +1. Install DocFX: + ```bash + dotnet tool install -g docfx + ``` + +2. Build the documentation: + ```bash + cd docs + docfx docfx.json --serve + ``` + +3. Open your browser to `http://localhost:8080` to view the documentation. + +## Structure + +- `docfx.json` - DocFX configuration file +- `index.md` - Main documentation homepage +- `toc.yml` - Table of contents configuration +- `installation.md` - Installation guide +- `quickstart.md` - Quick start guide +- `_site/` - Generated documentation output (ignored by git) + +## Deployment + +Documentation is automatically built and deployed to GitHub Pages when changes are pushed to the `main` branch. The workflow is defined in `.github/workflows/docs.yml`. + + + +- name: Home + href: index.md +- name: Installation + href: installation.md +- name: Quick Start + href: quickstart.md +- name: Contributing + href: CONTRIBUTING.md +- name: Support + href: SUPPORT.md + + + +# Constitution Update Checklist + +When amending the constitution (`/memory/constitution.md`), ensure all dependent documents are updated to maintain consistency. + +## Templates to Update + +### When adding/modifying ANY article: +- [ ] `/templates/plan-template.md` - Update Constitution Check section +- [ ] `/templates/spec-template.md` - Update if requirements/scope affected +- [ ] `/templates/tasks-template.md` - Update if new task types needed +- [ ] `/.claude/commands/plan.md` - Update if planning process changes +- [ ] `/.claude/commands/tasks.md` - Update if task generation affected +- [ ] `/CLAUDE.md` - Update runtime development guidelines + +### Article-specific updates: + +#### Article I (Library-First): +- [ ] Ensure templates emphasize library creation +- [ ] Update CLI command examples +- [ ] Add llms.txt documentation requirements + +#### Article II (CLI Interface): +- [ ] Update CLI flag requirements in templates +- [ ] Add text I/O protocol reminders + +#### Article III (Test-First): +- [ ] Update test order in all templates +- [ ] Emphasize TDD requirements +- [ ] Add test approval gates + +#### Article IV (Integration Testing): +- [ ] List integration test triggers +- [ ] Update test type priorities +- [ ] Add real dependency requirements + +#### Article V (Observability): +- [ ] Add logging requirements to templates +- [ ] Include multi-tier log streaming +- [ ] Update performance monitoring sections + +#### Article VI (Versioning): +- [ ] Add version increment reminders +- [ ] Include breaking change procedures +- [ ] Update migration requirements + +#### Article VII (Simplicity): +- [ ] Update project count limits +- [ ] Add pattern prohibition examples +- [ ] Include YAGNI reminders + +## Validation Steps + +1. **Before committing constitution changes:** + - [ ] All templates reference new requirements + - [ ] Examples updated to match new rules + - [ ] No contradictions between documents + +2. **After updating templates:** + - [ ] Run through a sample implementation plan + - [ ] Verify all constitution requirements addressed + - [ ] Check that templates are self-contained (readable without constitution) + +3. **Version tracking:** + - [ ] Update constitution version number + - [ ] Note version in template footers + - [ ] Add amendment to constitution history + +## Common Misses + +Watch for these often-forgotten updates: +- Command documentation (`/commands/*.md`) +- Checklist items in templates +- Example code/commands +- Domain-specific variations (web vs mobile vs CLI) +- Cross-references between documents + +## Template Sync Status + +Last sync check: 2025-07-16 +- Constitution version: 2.1.1 +- Templates aligned: ❌ (missing versioning, observability details) + +--- + +*This checklist ensures the constitution's principles are consistently applied across all project documentation.* + + + +# [PROJECT_NAME] Constitution + + +## Core Principles + +### [PRINCIPLE_1_NAME] + +[PRINCIPLE_1_DESCRIPTION] + + +### [PRINCIPLE_2_NAME] + +[PRINCIPLE_2_DESCRIPTION] + + +### [PRINCIPLE_3_NAME] + +[PRINCIPLE_3_DESCRIPTION] + + +### [PRINCIPLE_4_NAME] + +[PRINCIPLE_4_DESCRIPTION] + + +### [PRINCIPLE_5_NAME] + +[PRINCIPLE_5_DESCRIPTION] + + +## [SECTION_2_NAME] + + +[SECTION_2_CONTENT] + + +## [SECTION_3_NAME] + + +[SECTION_3_CONTENT] + + +## Governance + + +[GOVERNANCE_RULES] + + +**Version**: [CONSTITUTION_VERSION] | **Ratified**: [RATIFICATION_DATE] | **Last Amended**: [LAST_AMENDED_DATE] + + + + +#!/usr/bin/env bash +# Check that implementation plan exists and find optional design documents +# Usage: ./check-task-prerequisites.sh [--json] + +set -e + +JSON_MODE=false +for arg in "$@"; do + case "$arg" in + --json) JSON_MODE=true ;; + --help|-h) echo "Usage: $0 [--json]"; exit 0 ;; + esac +done + +# Source common functions +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/common.sh" + +# Get all paths +eval $(get_feature_paths) + +# Check if on feature branch +check_feature_branch "$CURRENT_BRANCH" || exit 1 + +# Check if feature directory exists +if [[ ! -d "$FEATURE_DIR" ]]; then + echo "ERROR: Feature directory not found: $FEATURE_DIR" + echo "Run /specify first to create the feature structure." + exit 1 +fi + +# Check for implementation plan (required) +if [[ ! -f "$IMPL_PLAN" ]]; then + echo "ERROR: plan.md not found in $FEATURE_DIR" + echo "Run /plan first to create the plan." + exit 1 +fi + +if $JSON_MODE; then + # Build JSON array of available docs that actually exist + docs=() + [[ -f "$RESEARCH" ]] && docs+=("research.md") + [[ -f "$DATA_MODEL" ]] && docs+=("data-model.md") + ([[ -d "$CONTRACTS_DIR" ]] && [[ -n "$(ls -A "$CONTRACTS_DIR" 2>/dev/null)" ]]) && docs+=("contracts/") + [[ -f "$QUICKSTART" ]] && docs+=("quickstart.md") + # join array into JSON + json_docs=$(printf '"%s",' "${docs[@]}") + json_docs="[${json_docs%,}]" + printf '{"FEATURE_DIR":"%s","AVAILABLE_DOCS":%s}\n' "$FEATURE_DIR" "$json_docs" +else + # List available design documents (optional) + echo "FEATURE_DIR:$FEATURE_DIR" + echo "AVAILABLE_DOCS:" + + # Use common check functions + check_file "$RESEARCH" "research.md" + check_file "$DATA_MODEL" "data-model.md" + check_dir "$CONTRACTS_DIR" "contracts/" + check_file "$QUICKSTART" "quickstart.md" +fi + +# Always succeed - task generation should work with whatever docs are available + + + +#!/usr/bin/env bash +# Common functions and variables for all scripts + +# Get repository root +get_repo_root() { + git rev-parse --show-toplevel +} + +# Get current branch +get_current_branch() { + git rev-parse --abbrev-ref HEAD +} + +# Check if current branch is a feature branch +# Returns 0 if valid, 1 if not +check_feature_branch() { + local branch="$1" + if [[ ! "$branch" =~ ^[0-9]{3}- ]]; then + echo "ERROR: Not on a feature branch. Current branch: $branch" + echo "Feature branches should be named like: 001-feature-name" + return 1 + fi + return 0 +} + +# Get feature directory path +get_feature_dir() { + local repo_root="$1" + local branch="$2" + echo "$repo_root/specs/$branch" +} + +# Get all standard paths for a feature +# Usage: eval $(get_feature_paths) +# Sets: REPO_ROOT, CURRENT_BRANCH, FEATURE_DIR, FEATURE_SPEC, IMPL_PLAN, TASKS +get_feature_paths() { + local repo_root=$(get_repo_root) + local current_branch=$(get_current_branch) + local feature_dir=$(get_feature_dir "$repo_root" "$current_branch") + + echo "REPO_ROOT='$repo_root'" + echo "CURRENT_BRANCH='$current_branch'" + echo "FEATURE_DIR='$feature_dir'" + echo "FEATURE_SPEC='$feature_dir/spec.md'" + echo "IMPL_PLAN='$feature_dir/plan.md'" + echo "TASKS='$feature_dir/tasks.md'" + echo "RESEARCH='$feature_dir/research.md'" + echo "DATA_MODEL='$feature_dir/data-model.md'" + echo "QUICKSTART='$feature_dir/quickstart.md'" + echo "CONTRACTS_DIR='$feature_dir/contracts'" +} + +# Check if a file exists and report +check_file() { + local file="$1" + local description="$2" + if [[ -f "$file" ]]; then + echo " ✓ $description" + return 0 + else + echo " ✗ $description" + return 1 + fi +} + +# Check if a directory exists and has files +check_dir() { + local dir="$1" + local description="$2" + if [[ -d "$dir" ]] && [[ -n "$(ls -A "$dir" 2>/dev/null)" ]]; then + echo " ✓ $description" + return 0 + else + echo " ✗ $description" + return 1 + fi +} + + + +#!/usr/bin/env bash +# Create a new feature with branch, directory structure, and template +# Usage: ./create-new-feature.sh "feature description" +# ./create-new-feature.sh --json "feature description" + +set -e + +JSON_MODE=false + +# Collect non-flag args +ARGS=() +for arg in "$@"; do + case "$arg" in + --json) + JSON_MODE=true + ;; + --help|-h) + echo "Usage: $0 [--json] "; exit 0 ;; + *) + ARGS+=("$arg") ;; + esac +done + +FEATURE_DESCRIPTION="${ARGS[*]}" +if [ -z "$FEATURE_DESCRIPTION" ]; then + echo "Usage: $0 [--json] " >&2 + exit 1 +fi + +# Get repository root +REPO_ROOT=$(git rev-parse --show-toplevel) +SPECS_DIR="$REPO_ROOT/specs" + +# Create specs directory if it doesn't exist +mkdir -p "$SPECS_DIR" + +# Find the highest numbered feature directory +HIGHEST=0 +if [ -d "$SPECS_DIR" ]; then + for dir in "$SPECS_DIR"/*; do + if [ -d "$dir" ]; then + dirname=$(basename "$dir") + number=$(echo "$dirname" | grep -o '^[0-9]\+' || echo "0") + number=$((10#$number)) + if [ "$number" -gt "$HIGHEST" ]; then + HIGHEST=$number + fi + fi + done +fi + +# Generate next feature number with zero padding +NEXT=$((HIGHEST + 1)) +FEATURE_NUM=$(printf "%03d" "$NEXT") + +# Create branch name from description +BRANCH_NAME=$(echo "$FEATURE_DESCRIPTION" | \ + tr '[:upper:]' '[:lower:]' | \ + sed 's/[^a-z0-9]/-/g' | \ + sed 's/-\+/-/g' | \ + sed 's/^-//' | \ + sed 's/-$//') + +# Extract 2-3 meaningful words +WORDS=$(echo "$BRANCH_NAME" | tr '-' '\n' | grep -v '^$' | head -3 | tr '\n' '-' | sed 's/-$//') + +# Final branch name +BRANCH_NAME="${FEATURE_NUM}-${WORDS}" + +# Create and switch to new branch +git checkout -b "$BRANCH_NAME" + +# Create feature directory +FEATURE_DIR="$SPECS_DIR/$BRANCH_NAME" +mkdir -p "$FEATURE_DIR" + +# Copy template if it exists +TEMPLATE="$REPO_ROOT/templates/spec-template.md" +SPEC_FILE="$FEATURE_DIR/spec.md" + +if [ -f "$TEMPLATE" ]; then + cp "$TEMPLATE" "$SPEC_FILE" +else + echo "Warning: Template not found at $TEMPLATE" >&2 + touch "$SPEC_FILE" +fi + +if $JSON_MODE; then + printf '{"BRANCH_NAME":"%s","SPEC_FILE":"%s","FEATURE_NUM":"%s"}\n' \ + "$BRANCH_NAME" "$SPEC_FILE" "$FEATURE_NUM" +else + # Output results for the LLM to use (legacy key: value format) + echo "BRANCH_NAME: $BRANCH_NAME" + echo "SPEC_FILE: $SPEC_FILE" + echo "FEATURE_NUM: $FEATURE_NUM" +fi + + + +#!/usr/bin/env bash +# Get paths for current feature branch without creating anything +# Used by commands that need to find existing feature files + +set -e + +# Source common functions +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/common.sh" + +# Get all paths +eval $(get_feature_paths) + +# Check if on feature branch +check_feature_branch "$CURRENT_BRANCH" || exit 1 + +# Output paths (don't create anything) +echo "REPO_ROOT: $REPO_ROOT" +echo "BRANCH: $CURRENT_BRANCH" +echo "FEATURE_DIR: $FEATURE_DIR" +echo "FEATURE_SPEC: $FEATURE_SPEC" +echo "IMPL_PLAN: $IMPL_PLAN" +echo "TASKS: $TASKS" + + + +#!/usr/bin/env bash +# Setup implementation plan structure for current branch +# Returns paths needed for implementation plan generation +# Usage: ./setup-plan.sh [--json] + +set -e + +JSON_MODE=false +for arg in "$@"; do + case "$arg" in + --json) JSON_MODE=true ;; + --help|-h) echo "Usage: $0 [--json]"; exit 0 ;; + esac +done + +# Source common functions +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/common.sh" + +# Get all paths +eval $(get_feature_paths) + +# Check if on feature branch +check_feature_branch "$CURRENT_BRANCH" || exit 1 + +# Create specs directory if it doesn't exist +mkdir -p "$FEATURE_DIR" + +# Copy plan template if it exists +TEMPLATE="$REPO_ROOT/templates/plan-template.md" +if [ -f "$TEMPLATE" ]; then + cp "$TEMPLATE" "$IMPL_PLAN" +fi + +if $JSON_MODE; then + printf '{"FEATURE_SPEC":"%s","IMPL_PLAN":"%s","SPECS_DIR":"%s","BRANCH":"%s"}\n' \ + "$FEATURE_SPEC" "$IMPL_PLAN" "$FEATURE_DIR" "$CURRENT_BRANCH" +else + # Output all paths for LLM use + echo "FEATURE_SPEC: $FEATURE_SPEC" + echo "IMPL_PLAN: $IMPL_PLAN" + echo "SPECS_DIR: $FEATURE_DIR" + echo "BRANCH: $CURRENT_BRANCH" +fi + + + +#!/usr/bin/env bash +# Incrementally update agent context files based on new feature plan +# Supports: CLAUDE.md, GEMINI.md, and .github/copilot-instructions.md +# O(1) operation - only reads current context file and new plan.md + +set -e + +REPO_ROOT=$(git rev-parse --show-toplevel) +CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) +FEATURE_DIR="$REPO_ROOT/specs/$CURRENT_BRANCH" +NEW_PLAN="$FEATURE_DIR/plan.md" + +# Determine which agent context files to update +CLAUDE_FILE="$REPO_ROOT/CLAUDE.md" +GEMINI_FILE="$REPO_ROOT/GEMINI.md" +COPILOT_FILE="$REPO_ROOT/.github/copilot-instructions.md" + +# Allow override via argument +AGENT_TYPE="$1" + +if [ ! -f "$NEW_PLAN" ]; then + echo "ERROR: No plan.md found at $NEW_PLAN" + exit 1 +fi + +echo "=== Updating agent context files for feature $CURRENT_BRANCH ===" + +# Extract tech from new plan +NEW_LANG=$(grep "^**Language/Version**: " "$NEW_PLAN" 2>/dev/null | head -1 | sed 's/^**Language\/Version**: //' | grep -v "NEEDS CLARIFICATION" || echo "") +NEW_FRAMEWORK=$(grep "^**Primary Dependencies**: " "$NEW_PLAN" 2>/dev/null | head -1 | sed 's/^**Primary Dependencies**: //' | grep -v "NEEDS CLARIFICATION" || echo "") +NEW_TESTING=$(grep "^**Testing**: " "$NEW_PLAN" 2>/dev/null | head -1 | sed 's/^**Testing**: //' | grep -v "NEEDS CLARIFICATION" || echo "") +NEW_DB=$(grep "^**Storage**: " "$NEW_PLAN" 2>/dev/null | head -1 | sed 's/^**Storage**: //' | grep -v "N/A" | grep -v "NEEDS CLARIFICATION" || echo "") +NEW_PROJECT_TYPE=$(grep "^**Project Type**: " "$NEW_PLAN" 2>/dev/null | head -1 | sed 's/^**Project Type**: //' || echo "") + +# Function to update a single agent context file +update_agent_file() { + local target_file="$1" + local agent_name="$2" + + echo "Updating $agent_name context file: $target_file" + + # Create temp file for new context + local temp_file=$(mktemp) + + # If file doesn't exist, create from template + if [ ! -f "$target_file" ]; then + echo "Creating new $agent_name context file..." + + # Check if this is the SDD repo itself + if [ -f "$REPO_ROOT/templates/agent-file-template.md" ]; then + cp "$REPO_ROOT/templates/agent-file-template.md" "$temp_file" + else + echo "ERROR: Template not found at $REPO_ROOT/templates/agent-file-template.md" + return 1 + fi + + # Replace placeholders + sed -i.bak "s/\[PROJECT NAME\]/$(basename $REPO_ROOT)/" "$temp_file" + sed -i.bak "s/\[DATE\]/$(date +%Y-%m-%d)/" "$temp_file" + sed -i.bak "s/\[EXTRACTED FROM ALL PLAN.MD FILES\]/- $NEW_LANG + $NEW_FRAMEWORK ($CURRENT_BRANCH)/" "$temp_file" + + # Add project structure based on type + if [[ "$NEW_PROJECT_TYPE" == *"web"* ]]; then + sed -i.bak "s|\[ACTUAL STRUCTURE FROM PLANS\]|backend/\nfrontend/\ntests/|" "$temp_file" + else + sed -i.bak "s|\[ACTUAL STRUCTURE FROM PLANS\]|src/\ntests/|" "$temp_file" + fi + + # Add minimal commands + if [[ "$NEW_LANG" == *"Python"* ]]; then + COMMANDS="cd src && pytest && ruff check ." + elif [[ "$NEW_LANG" == *"Rust"* ]]; then + COMMANDS="cargo test && cargo clippy" + elif [[ "$NEW_LANG" == *"JavaScript"* ]] || [[ "$NEW_LANG" == *"TypeScript"* ]]; then + COMMANDS="npm test && npm run lint" + else + COMMANDS="# Add commands for $NEW_LANG" + fi + sed -i.bak "s|\[ONLY COMMANDS FOR ACTIVE TECHNOLOGIES\]|$COMMANDS|" "$temp_file" + + # Add code style + sed -i.bak "s|\[LANGUAGE-SPECIFIC, ONLY FOR LANGUAGES IN USE\]|$NEW_LANG: Follow standard conventions|" "$temp_file" + + # Add recent changes + sed -i.bak "s|\[LAST 3 FEATURES AND WHAT THEY ADDED\]|- $CURRENT_BRANCH: Added $NEW_LANG + $NEW_FRAMEWORK|" "$temp_file" + + rm "$temp_file.bak" + else + echo "Updating existing $agent_name context file..." + + # Extract manual additions + local manual_start=$(grep -n "" "$target_file" | cut -d: -f1) + local manual_end=$(grep -n "" "$target_file" | cut -d: -f1) + + if [ ! -z "$manual_start" ] && [ ! -z "$manual_end" ]; then + sed -n "${manual_start},${manual_end}p" "$target_file" > /tmp/manual_additions.txt + fi + + # Parse existing file and create updated version + python3 - << EOF +import re +import sys +from datetime import datetime + +# Read existing file +with open("$target_file", 'r') as f: + content = f.read() + +# Check if new tech already exists +tech_section = re.search(r'## Active Technologies\n(.*?)\n\n', content, re.DOTALL) +if tech_section: + existing_tech = tech_section.group(1) + + # Add new tech if not already present + new_additions = [] + if "$NEW_LANG" and "$NEW_LANG" not in existing_tech: + new_additions.append(f"- $NEW_LANG + $NEW_FRAMEWORK ($CURRENT_BRANCH)") + if "$NEW_DB" and "$NEW_DB" not in existing_tech and "$NEW_DB" != "N/A": + new_additions.append(f"- $NEW_DB ($CURRENT_BRANCH)") + + if new_additions: + updated_tech = existing_tech + "\n" + "\n".join(new_additions) + content = content.replace(tech_section.group(0), f"## Active Technologies\n{updated_tech}\n\n") + +# Update project structure if needed +if "$NEW_PROJECT_TYPE" == "web" and "frontend/" not in content: + struct_section = re.search(r'## Project Structure\n\`\`\`\n(.*?)\n\`\`\`', content, re.DOTALL) + if struct_section: + updated_struct = struct_section.group(1) + "\nfrontend/src/ # Web UI" + content = re.sub(r'(## Project Structure\n\`\`\`\n).*?(\n\`\`\`)', + f'\\1{updated_struct}\\2', content, flags=re.DOTALL) + +# Add new commands if language is new +if "$NEW_LANG" and f"# {NEW_LANG}" not in content: + commands_section = re.search(r'## Commands\n\`\`\`bash\n(.*?)\n\`\`\`', content, re.DOTALL) + if not commands_section: + commands_section = re.search(r'## Commands\n(.*?)\n\n', content, re.DOTALL) + + if commands_section: + new_commands = commands_section.group(1) + if "Python" in "$NEW_LANG": + new_commands += "\ncd src && pytest && ruff check ." + elif "Rust" in "$NEW_LANG": + new_commands += "\ncargo test && cargo clippy" + elif "JavaScript" in "$NEW_LANG" or "TypeScript" in "$NEW_LANG": + new_commands += "\nnpm test && npm run lint" + + if "```bash" in content: + content = re.sub(r'(## Commands\n\`\`\`bash\n).*?(\n\`\`\`)', + f'\\1{new_commands}\\2', content, flags=re.DOTALL) + else: + content = re.sub(r'(## Commands\n).*?(\n\n)', + f'\\1{new_commands}\\2', content, flags=re.DOTALL) + +# Update recent changes (keep only last 3) +changes_section = re.search(r'## Recent Changes\n(.*?)(\n\n|$)', content, re.DOTALL) +if changes_section: + changes = changes_section.group(1).strip().split('\n') + changes.insert(0, f"- $CURRENT_BRANCH: Added $NEW_LANG + $NEW_FRAMEWORK") + # Keep only last 3 + changes = changes[:3] + content = re.sub(r'(## Recent Changes\n).*?(\n\n|$)', + f'\\1{chr(10).join(changes)}\\2', content, flags=re.DOTALL) + +# Update date +content = re.sub(r'Last updated: \d{4}-\d{2}-\d{2}', + f'Last updated: {datetime.now().strftime("%Y-%m-%d")}', content) + +# Write to temp file +with open("$temp_file", 'w') as f: + f.write(content) +EOF + + # Restore manual additions if they exist + if [ -f /tmp/manual_additions.txt ]; then + # Remove old manual section from temp file + sed -i.bak '//,//d' "$temp_file" + # Append manual additions + cat /tmp/manual_additions.txt >> "$temp_file" + rm /tmp/manual_additions.txt "$temp_file.bak" + fi + fi + + # Move temp file to final location + mv "$temp_file" "$target_file" + echo "✅ $agent_name context file updated successfully" +} + +# Update files based on argument or detect existing files +case "$AGENT_TYPE" in + "claude") + update_agent_file "$CLAUDE_FILE" "Claude Code" + ;; + "gemini") + update_agent_file "$GEMINI_FILE" "Gemini CLI" + ;; + "copilot") + update_agent_file "$COPILOT_FILE" "GitHub Copilot" + ;; + "") + # Update all existing files + [ -f "$CLAUDE_FILE" ] && update_agent_file "$CLAUDE_FILE" "Claude Code" + [ -f "$GEMINI_FILE" ] && update_agent_file "$GEMINI_FILE" "Gemini CLI" + [ -f "$COPILOT_FILE" ] && update_agent_file "$COPILOT_FILE" "GitHub Copilot" + + # If no files exist, create based on current directory or ask user + if [ ! -f "$CLAUDE_FILE" ] && [ ! -f "$GEMINI_FILE" ] && [ ! -f "$COPILOT_FILE" ]; then + echo "No agent context files found. Creating Claude Code context file by default." + update_agent_file "$CLAUDE_FILE" "Claude Code" + fi + ;; + *) + echo "ERROR: Unknown agent type '$AGENT_TYPE'. Use: claude, gemini, copilot, or leave empty for all." + exit 1 + ;; +esac +echo "" +echo "Summary of changes:" +if [ ! -z "$NEW_LANG" ]; then + echo "- Added language: $NEW_LANG" +fi +if [ ! -z "$NEW_FRAMEWORK" ]; then + echo "- Added framework: $NEW_FRAMEWORK" +fi +if [ ! -z "$NEW_DB" ] && [ "$NEW_DB" != "N/A" ]; then + echo "- Added database: $NEW_DB" +fi + +echo "" +echo "Usage: $0 [claude|gemini|copilot]" +echo " - No argument: Update all existing agent context files" +echo " - claude: Update only CLAUDE.md" +echo " - gemini: Update only GEMINI.md" +echo " - copilot: Update only .github/copilot-instructions.md" + + + +#!/usr/bin/env python3 +# /// script +# requires-python = ">=3.11" +# dependencies = [ +# "typer", +# "rich", +# "platformdirs", +# "readchar", +# "httpx", +# ] +# /// +""" +Specify CLI - Setup tool for Specify projects + +Usage: + uvx specify-cli.py init + uvx specify-cli.py init --here + +Or install globally: + uv tool install --from specify-cli.py specify-cli + specify init + specify init --here +""" + +import os +import subprocess +import sys +import zipfile +import tempfile +import shutil +import json +from pathlib import Path +from typing import Optional + +import typer +import httpx +from rich.console import Console +from rich.panel import Panel +from rich.progress import Progress, SpinnerColumn, TextColumn +from rich.text import Text +from rich.live import Live +from rich.align import Align +from rich.table import Table +from rich.tree import Tree +from typer.core import TyperGroup + +# For cross-platform keyboard input +import readchar + +# Constants +AI_CHOICES = { + "copilot": "GitHub Copilot", + "claude": "Claude Code", + "gemini": "Gemini CLI" +} + +# ASCII Art Banner +BANNER = """ +███████╗██████╗ ███████╗ ██████╗██╗███████╗██╗ ██╗ +██╔════╝██╔══██╗██╔════╝██╔════╝██║██╔════╝╚██╗ ██╔╝ +███████╗██████╔╝█████╗ ██║ ██║█████╗ ╚████╔╝ +╚════██║██╔═══╝ ██╔══╝ ██║ ██║██╔══╝ ╚██╔╝ +███████║██║ ███████╗╚██████╗██║██║ ██║ +╚══════╝╚═╝ ╚══════╝ ╚═════╝╚═╝╚═╝ ╚═╝ +""" + +TAGLINE = "Spec-Driven Development Toolkit" +class StepTracker: + """Track and render hierarchical steps without emojis, similar to Claude Code tree output. + Supports live auto-refresh via an attached refresh callback. + """ + def __init__(self, title: str): + self.title = title + self.steps = [] # list of dicts: {key, label, status, detail} + self.status_order = {"pending": 0, "running": 1, "done": 2, "error": 3, "skipped": 4} + self._refresh_cb = None # callable to trigger UI refresh + + def attach_refresh(self, cb): + self._refresh_cb = cb + + def add(self, key: str, label: str): + if key not in [s["key"] for s in self.steps]: + self.steps.append({"key": key, "label": label, "status": "pending", "detail": ""}) + self._maybe_refresh() + + def start(self, key: str, detail: str = ""): + self._update(key, status="running", detail=detail) + + def complete(self, key: str, detail: str = ""): + self._update(key, status="done", detail=detail) + + def error(self, key: str, detail: str = ""): + self._update(key, status="error", detail=detail) + + def skip(self, key: str, detail: str = ""): + self._update(key, status="skipped", detail=detail) + + def _update(self, key: str, status: str, detail: str): + for s in self.steps: + if s["key"] == key: + s["status"] = status + if detail: + s["detail"] = detail + self._maybe_refresh() + return + # If not present, add it + self.steps.append({"key": key, "label": key, "status": status, "detail": detail}) + self._maybe_refresh() + + def _maybe_refresh(self): + if self._refresh_cb: + try: + self._refresh_cb() + except Exception: + pass + + def render(self): + tree = Tree(f"[bold cyan]{self.title}[/bold cyan]", guide_style="grey50") + for step in self.steps: + label = step["label"] + detail_text = step["detail"].strip() if step["detail"] else "" + + # Circles (unchanged styling) + status = step["status"] + if status == "done": + symbol = "[green]●[/green]" + elif status == "pending": + symbol = "[green dim]○[/green dim]" + elif status == "running": + symbol = "[cyan]○[/cyan]" + elif status == "error": + symbol = "[red]●[/red]" + elif status == "skipped": + symbol = "[yellow]○[/yellow]" + else: + symbol = " " + + if status == "pending": + # Entire line light gray (pending) + if detail_text: + line = f"{symbol} [bright_black]{label} ({detail_text})[/bright_black]" + else: + line = f"{symbol} [bright_black]{label}[/bright_black]" + else: + # Label white, detail (if any) light gray in parentheses + if detail_text: + line = f"{symbol} [white]{label}[/white] [bright_black]({detail_text})[/bright_black]" + else: + line = f"{symbol} [white]{label}[/white]" + + tree.add(line) + return tree + + + +MINI_BANNER = """ +╔═╗╔═╗╔═╗╔═╗╦╔═╗╦ ╦ +╚═╗╠═╝║╣ ║ ║╠╣ ╚╦╝ +╚═╝╩ ╚═╝╚═╝╩╚ ╩ +""" + +def get_key(): + """Get a single keypress in a cross-platform way using readchar.""" + key = readchar.readkey() + + # Arrow keys + if key == readchar.key.UP: + return 'up' + if key == readchar.key.DOWN: + return 'down' + + # Enter/Return + if key == readchar.key.ENTER: + return 'enter' + + # Escape + if key == readchar.key.ESC: + return 'escape' + + # Ctrl+C + if key == readchar.key.CTRL_C: + raise KeyboardInterrupt + + return key + + + +def select_with_arrows(options: dict, prompt_text: str = "Select an option", default_key: str = None) -> str: + """ + Interactive selection using arrow keys with Rich Live display. + + Args: + options: Dict with keys as option keys and values as descriptions + prompt_text: Text to show above the options + default_key: Default option key to start with + + Returns: + Selected option key + """ + option_keys = list(options.keys()) + if default_key and default_key in option_keys: + selected_index = option_keys.index(default_key) + else: + selected_index = 0 + + selected_key = None + + def create_selection_panel(): + """Create the selection panel with current selection highlighted.""" + table = Table.grid(padding=(0, 2)) + table.add_column(style="bright_cyan", justify="left", width=3) + table.add_column(style="white", justify="left") + + for i, key in enumerate(option_keys): + if i == selected_index: + table.add_row("▶", f"[bright_cyan]{key}: {options[key]}[/bright_cyan]") + else: + table.add_row(" ", f"[white]{key}: {options[key]}[/white]") + + table.add_row("", "") + table.add_row("", "[dim]Use ↑/↓ to navigate, Enter to select, Esc to cancel[/dim]") + + return Panel( + table, + title=f"[bold]{prompt_text}[/bold]", + border_style="cyan", + padding=(1, 2) + ) + + console.print() + + def run_selection_loop(): + nonlocal selected_key, selected_index + with Live(create_selection_panel(), console=console, transient=True, auto_refresh=False) as live: + while True: + try: + key = get_key() + if key == 'up': + selected_index = (selected_index - 1) % len(option_keys) + elif key == 'down': + selected_index = (selected_index + 1) % len(option_keys) + elif key == 'enter': + selected_key = option_keys[selected_index] + break + elif key == 'escape': + console.print("\n[yellow]Selection cancelled[/yellow]") + raise typer.Exit(1) + + live.update(create_selection_panel(), refresh=True) + + except KeyboardInterrupt: + console.print("\n[yellow]Selection cancelled[/yellow]") + raise typer.Exit(1) + + run_selection_loop() + + if selected_key is None: + console.print("\n[red]Selection failed.[/red]") + raise typer.Exit(1) + + # Suppress explicit selection print; tracker / later logic will report consolidated status + return selected_key + + + +console = Console() + + +class BannerGroup(TyperGroup): + """Custom group that shows banner before help.""" + + def format_help(self, ctx, formatter): + # Show banner before help + show_banner() + super().format_help(ctx, formatter) + + +app = typer.Typer( + name="specify", + help="Setup tool for Specify spec-driven development projects", + add_completion=False, + invoke_without_command=True, + cls=BannerGroup, +) + + +def show_banner(): + """Display the ASCII art banner.""" + # Create gradient effect with different colors + banner_lines = BANNER.strip().split('\n') + colors = ["bright_blue", "blue", "cyan", "bright_cyan", "white", "bright_white"] + + styled_banner = Text() + for i, line in enumerate(banner_lines): + color = colors[i % len(colors)] + styled_banner.append(line + "\n", style=color) + + console.print(Align.center(styled_banner)) + console.print(Align.center(Text(TAGLINE, style="italic bright_yellow"))) + console.print() + + +@app.callback() +def callback(ctx: typer.Context): + """Show banner when no subcommand is provided.""" + # Show banner only when no subcommand and no help flag + # (help is handled by BannerGroup) + if ctx.invoked_subcommand is None and "--help" not in sys.argv and "-h" not in sys.argv: + show_banner() + console.print(Align.center("[dim]Run 'specify --help' for usage information[/dim]")) + console.print() + + +def run_command(cmd: list[str], check_return: bool = True, capture: bool = False, shell: bool = False) -> Optional[str]: + """Run a shell command and optionally capture output.""" + try: + if capture: + result = subprocess.run(cmd, check=check_return, capture_output=True, text=True, shell=shell) + return result.stdout.strip() + else: + subprocess.run(cmd, check=check_return, shell=shell) + return None + except subprocess.CalledProcessError as e: + if check_return: + console.print(f"[red]Error running command:[/red] {' '.join(cmd)}") + console.print(f"[red]Exit code:[/red] {e.returncode}") + if hasattr(e, 'stderr') and e.stderr: + console.print(f"[red]Error output:[/red] {e.stderr}") + raise + return None + + +def check_tool(tool: str, install_hint: str) -> bool: + """Check if a tool is installed.""" + if shutil.which(tool): + return True + else: + console.print(f"[yellow]⚠️ {tool} not found[/yellow]") + console.print(f" Install with: [cyan]{install_hint}[/cyan]") + return False + + +def is_git_repo(path: Path = None) -> bool: + """Check if the specified path is inside a git repository.""" + if path is None: + path = Path.cwd() + + if not path.is_dir(): + return False + + try: + # Use git command to check if inside a work tree + subprocess.run( + ["git", "rev-parse", "--is-inside-work-tree"], + check=True, + capture_output=True, + cwd=path, + ) + return True + except (subprocess.CalledProcessError, FileNotFoundError): + return False + + +def init_git_repo(project_path: Path, quiet: bool = False) -> bool: + """Initialize a git repository in the specified path. + quiet: if True suppress console output (tracker handles status) + """ + try: + original_cwd = Path.cwd() + os.chdir(project_path) + if not quiet: + console.print("[cyan]Initializing git repository...[/cyan]") + subprocess.run(["git", "init"], check=True, capture_output=True) + subprocess.run(["git", "add", "."], check=True, capture_output=True) + subprocess.run(["git", "commit", "-m", "Initial commit from Specify template"], check=True, capture_output=True) + if not quiet: + console.print("[green]✓[/green] Git repository initialized") + return True + + except subprocess.CalledProcessError as e: + if not quiet: + console.print(f"[red]Error initializing git repository:[/red] {e}") + return False + finally: + os.chdir(original_cwd) + + +def download_template_from_github(ai_assistant: str, download_dir: Path, *, verbose: bool = True, show_progress: bool = True): + """Download the latest template release from GitHub using HTTP requests. + Returns (zip_path, metadata_dict) + """ + repo_owner = "github" + repo_name = "spec-kit" + + if verbose: + console.print("[cyan]Fetching latest release information...[/cyan]") + api_url = f"https://api.github.com/repos/{repo_owner}/{repo_name}/releases/latest" + + try: + response = httpx.get(api_url, timeout=30, follow_redirects=True) + response.raise_for_status() + release_data = response.json() + except httpx.RequestError as e: + if verbose: + console.print(f"[red]Error fetching release information:[/red] {e}") + raise typer.Exit(1) + + # Find the template asset for the specified AI assistant + pattern = f"spec-kit-template-{ai_assistant}" + matching_assets = [ + asset for asset in release_data.get("assets", []) + if pattern in asset["name"] and asset["name"].endswith(".zip") + ] + + if not matching_assets: + if verbose: + console.print(f"[red]Error:[/red] No template found for AI assistant '{ai_assistant}'") + console.print(f"[yellow]Available assets:[/yellow]") + for asset in release_data.get("assets", []): + console.print(f" - {asset['name']}") + raise typer.Exit(1) + + # Use the first matching asset + asset = matching_assets[0] + download_url = asset["browser_download_url"] + filename = asset["name"] + file_size = asset["size"] + + if verbose: + console.print(f"[cyan]Found template:[/cyan] {filename}") + console.print(f"[cyan]Size:[/cyan] {file_size:,} bytes") + console.print(f"[cyan]Release:[/cyan] {release_data['tag_name']}") + + # Download the file + zip_path = download_dir / filename + if verbose: + console.print(f"[cyan]Downloading template...[/cyan]") + + try: + with httpx.stream("GET", download_url, timeout=30, follow_redirects=True) as response: + response.raise_for_status() + total_size = int(response.headers.get('content-length', 0)) + + with open(zip_path, 'wb') as f: + if total_size == 0: + # No content-length header, download without progress + for chunk in response.iter_bytes(chunk_size=8192): + f.write(chunk) + else: + if show_progress: + # Show progress bar + with Progress( + SpinnerColumn(), + TextColumn("[progress.description]{task.description}"), + TextColumn("[progress.percentage]{task.percentage:>3.0f}%"), + console=console, + ) as progress: + task = progress.add_task("Downloading...", total=total_size) + downloaded = 0 + for chunk in response.iter_bytes(chunk_size=8192): + f.write(chunk) + downloaded += len(chunk) + progress.update(task, completed=downloaded) + else: + # Silent download loop + for chunk in response.iter_bytes(chunk_size=8192): + f.write(chunk) + + except httpx.RequestError as e: + if verbose: + console.print(f"[red]Error downloading template:[/red] {e}") + if zip_path.exists(): + zip_path.unlink() + raise typer.Exit(1) + if verbose: + console.print(f"Downloaded: {filename}") + metadata = { + "filename": filename, + "size": file_size, + "release": release_data["tag_name"], + "asset_url": download_url + } + return zip_path, metadata + + +def download_and_extract_template(project_path: Path, ai_assistant: str, is_current_dir: bool = False, *, verbose: bool = True, tracker: StepTracker | None = None) -> Path: + """Download the latest release and extract it to create a new project. + Returns project_path. Uses tracker if provided (with keys: fetch, download, extract, cleanup) + """ + current_dir = Path.cwd() + + # Step: fetch + download combined + if tracker: + tracker.start("fetch", "contacting GitHub API") + try: + zip_path, meta = download_template_from_github( + ai_assistant, + current_dir, + verbose=verbose and tracker is None, + show_progress=(tracker is None) + ) + if tracker: + tracker.complete("fetch", f"release {meta['release']} ({meta['size']:,} bytes)") + tracker.add("download", "Download template") + tracker.complete("download", meta['filename']) # already downloaded inside helper + except Exception as e: + if tracker: + tracker.error("fetch", str(e)) + else: + if verbose: + console.print(f"[red]Error downloading template:[/red] {e}") + raise + + if tracker: + tracker.add("extract", "Extract template") + tracker.start("extract") + elif verbose: + console.print("Extracting template...") + + try: + # Create project directory only if not using current directory + if not is_current_dir: + project_path.mkdir(parents=True) + + with zipfile.ZipFile(zip_path, 'r') as zip_ref: + # List all files in the ZIP for debugging + zip_contents = zip_ref.namelist() + if tracker: + tracker.start("zip-list") + tracker.complete("zip-list", f"{len(zip_contents)} entries") + elif verbose: + console.print(f"[cyan]ZIP contains {len(zip_contents)} items[/cyan]") + + # For current directory, extract to a temp location first + if is_current_dir: + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + zip_ref.extractall(temp_path) + + # Check what was extracted + extracted_items = list(temp_path.iterdir()) + if tracker: + tracker.start("extracted-summary") + tracker.complete("extracted-summary", f"temp {len(extracted_items)} items") + elif verbose: + console.print(f"[cyan]Extracted {len(extracted_items)} items to temp location[/cyan]") + + # Handle GitHub-style ZIP with a single root directory + source_dir = temp_path + if len(extracted_items) == 1 and extracted_items[0].is_dir(): + source_dir = extracted_items[0] + if tracker: + tracker.add("flatten", "Flatten nested directory") + tracker.complete("flatten") + elif verbose: + console.print(f"[cyan]Found nested directory structure[/cyan]") + + # Copy contents to current directory + for item in source_dir.iterdir(): + dest_path = project_path / item.name + if item.is_dir(): + if dest_path.exists(): + if verbose and not tracker: + console.print(f"[yellow]Merging directory:[/yellow] {item.name}") + # Recursively copy directory contents + for sub_item in item.rglob('*'): + if sub_item.is_file(): + rel_path = sub_item.relative_to(item) + dest_file = dest_path / rel_path + dest_file.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(sub_item, dest_file) + else: + shutil.copytree(item, dest_path) + else: + if dest_path.exists() and verbose and not tracker: + console.print(f"[yellow]Overwriting file:[/yellow] {item.name}") + shutil.copy2(item, dest_path) + if verbose and not tracker: + console.print(f"[cyan]Template files merged into current directory[/cyan]") + else: + # Extract directly to project directory (original behavior) + zip_ref.extractall(project_path) + + # Check what was extracted + extracted_items = list(project_path.iterdir()) + if tracker: + tracker.start("extracted-summary") + tracker.complete("extracted-summary", f"{len(extracted_items)} top-level items") + elif verbose: + console.print(f"[cyan]Extracted {len(extracted_items)} items to {project_path}:[/cyan]") + for item in extracted_items: + console.print(f" - {item.name} ({'dir' if item.is_dir() else 'file'})") + + # Handle GitHub-style ZIP with a single root directory + if len(extracted_items) == 1 and extracted_items[0].is_dir(): + # Move contents up one level + nested_dir = extracted_items[0] + temp_move_dir = project_path.parent / f"{project_path.name}_temp" + # Move the nested directory contents to temp location + shutil.move(str(nested_dir), str(temp_move_dir)) + # Remove the now-empty project directory + project_path.rmdir() + # Rename temp directory to project directory + shutil.move(str(temp_move_dir), str(project_path)) + if tracker: + tracker.add("flatten", "Flatten nested directory") + tracker.complete("flatten") + elif verbose: + console.print(f"[cyan]Flattened nested directory structure[/cyan]") + + except Exception as e: + if tracker: + tracker.error("extract", str(e)) + else: + if verbose: + console.print(f"[red]Error extracting template:[/red] {e}") + # Clean up project directory if created and not current directory + if not is_current_dir and project_path.exists(): + shutil.rmtree(project_path) + raise typer.Exit(1) + else: + if tracker: + tracker.complete("extract") + finally: + if tracker: + tracker.add("cleanup", "Remove temporary archive") + # Clean up downloaded ZIP file + if zip_path.exists(): + zip_path.unlink() + if tracker: + tracker.complete("cleanup") + elif verbose: + console.print(f"Cleaned up: {zip_path.name}") + + return project_path + + +@app.command() +def init( + project_name: str = typer.Argument(None, help="Name for your new project directory (optional if using --here)"), + ai_assistant: str = typer.Option(None, "--ai", help="AI assistant to use: claude, gemini, or copilot"), + ignore_agent_tools: bool = typer.Option(False, "--ignore-agent-tools", help="Skip checks for AI agent tools like Claude Code"), + no_git: bool = typer.Option(False, "--no-git", help="Skip git repository initialization"), + here: bool = typer.Option(False, "--here", help="Initialize project in the current directory instead of creating a new one"), +): + """ + Initialize a new Specify project from the latest template. + + This command will: + 1. Check that required tools are installed (git is optional) + 2. Let you choose your AI assistant (Claude Code, Gemini CLI, or GitHub Copilot) + 3. Download the appropriate template from GitHub + 4. Extract the template to a new project directory or current directory + 5. Initialize a fresh git repository (if not --no-git and no existing repo) + 6. Optionally set up AI assistant commands + + Examples: + specify init my-project + specify init my-project --ai claude + specify init my-project --ai gemini + specify init my-project --ai copilot --no-git + specify init --ignore-agent-tools my-project + specify init --here --ai claude + specify init --here + """ + # Show banner first + show_banner() + + # Validate arguments + if here and project_name: + console.print("[red]Error:[/red] Cannot specify both project name and --here flag") + raise typer.Exit(1) + + if not here and not project_name: + console.print("[red]Error:[/red] Must specify either a project name or use --here flag") + raise typer.Exit(1) + + # Determine project directory + if here: + project_name = Path.cwd().name + project_path = Path.cwd() + + # Check if current directory has any files + existing_items = list(project_path.iterdir()) + if existing_items: + console.print(f"[yellow]Warning:[/yellow] Current directory is not empty ({len(existing_items)} items)") + console.print("[yellow]Template files will be merged with existing content and may overwrite existing files[/yellow]") + + # Ask for confirmation + response = typer.confirm("Do you want to continue?") + if not response: + console.print("[yellow]Operation cancelled[/yellow]") + raise typer.Exit(0) + else: + project_path = Path(project_name).resolve() + # Check if project directory already exists + if project_path.exists(): + console.print(f"[red]Error:[/red] Directory '{project_name}' already exists") + raise typer.Exit(1) + + console.print(Panel.fit( + "[bold cyan]Specify Project Setup[/bold cyan]\n" + f"{'Initializing in current directory:' if here else 'Creating new project:'} [green]{project_path.name}[/green]" + + (f"\n[dim]Path: {project_path}[/dim]" if here else ""), + border_style="cyan" + )) + + # Check git only if we might need it (not --no-git) + git_available = True + if not no_git: + git_available = check_tool("git", "https://git-scm.com/downloads") + if not git_available: + console.print("[yellow]Git not found - will skip repository initialization[/yellow]") + + # AI assistant selection + if ai_assistant: + if ai_assistant not in AI_CHOICES: + console.print(f"[red]Error:[/red] Invalid AI assistant '{ai_assistant}'. Choose from: {', '.join(AI_CHOICES.keys())}") + raise typer.Exit(1) + selected_ai = ai_assistant + else: + # Use arrow-key selection interface + selected_ai = select_with_arrows( + AI_CHOICES, + "Choose your AI assistant:", + "copilot" + ) + + # Check agent tools unless ignored + if not ignore_agent_tools: + agent_tool_missing = False + if selected_ai == "claude": + if not check_tool("claude", "Install from: https://docs.anthropic.com/en/docs/claude-code/setup"): + console.print("[red]Error:[/red] Claude CLI is required for Claude Code projects") + agent_tool_missing = True + elif selected_ai == "gemini": + if not check_tool("gemini", "Install from: https://github.com/google-gemini/gemini-cli"): + console.print("[red]Error:[/red] Gemini CLI is required for Gemini projects") + agent_tool_missing = True + # GitHub Copilot check is not needed as it's typically available in supported IDEs + + if agent_tool_missing: + console.print("\n[red]Required AI tool is missing![/red]") + console.print("[yellow]Tip:[/yellow] Use --ignore-agent-tools to skip this check") + raise typer.Exit(1) + + # Download and set up project + # New tree-based progress (no emojis); include earlier substeps + tracker = StepTracker("Initialize Specify Project") + # Flag to allow suppressing legacy headings + sys._specify_tracker_active = True + # Pre steps recorded as completed before live rendering + tracker.add("precheck", "Check required tools") + tracker.complete("precheck", "ok") + tracker.add("ai-select", "Select AI assistant") + tracker.complete("ai-select", f"{selected_ai}") + for key, label in [ + ("fetch", "Fetch latest release"), + ("download", "Download template"), + ("extract", "Extract template"), + ("zip-list", "Archive contents"), + ("extracted-summary", "Extraction summary"), + ("cleanup", "Cleanup"), + ("git", "Initialize git repository"), + ("final", "Finalize") + ]: + tracker.add(key, label) + + # Use transient so live tree is replaced by the final static render (avoids duplicate output) + with Live(tracker.render(), console=console, refresh_per_second=8, transient=True) as live: + tracker.attach_refresh(lambda: live.update(tracker.render())) + try: + download_and_extract_template(project_path, selected_ai, here, verbose=False, tracker=tracker) + + # Git step + if not no_git: + tracker.start("git") + if is_git_repo(project_path): + tracker.complete("git", "existing repo detected") + elif git_available: + if init_git_repo(project_path, quiet=True): + tracker.complete("git", "initialized") + else: + tracker.error("git", "init failed") + else: + tracker.skip("git", "git not available") + else: + tracker.skip("git", "--no-git flag") + + tracker.complete("final", "project ready") + except Exception as e: + tracker.error("final", str(e)) + if not here and project_path.exists(): + shutil.rmtree(project_path) + raise typer.Exit(1) + finally: + # Force final render + pass + + # Final static tree (ensures finished state visible after Live context ends) + console.print(tracker.render()) + console.print("\n[bold green]Project ready.[/bold green]") + + # Boxed "Next steps" section + steps_lines = [] + if not here: + steps_lines.append(f"1. [bold green]cd {project_name}[/bold green]") + step_num = 2 + else: + steps_lines.append("1. You're already in the project directory!") + step_num = 2 + + if selected_ai == "claude": + steps_lines.append(f"{step_num}. Open in Visual Studio Code and start using / commands with Claude Code") + steps_lines.append(" - Type / in any file to see available commands") + steps_lines.append(" - Use /specify to create specifications") + steps_lines.append(" - Use /plan to create implementation plans") + steps_lines.append(" - Use /tasks to generate tasks") + elif selected_ai == "gemini": + steps_lines.append(f"{step_num}. Use / commands with Gemini CLI") + steps_lines.append(" - Run gemini /specify to create specifications") + steps_lines.append(" - Run gemini /plan to create implementation plans") + steps_lines.append(" - See GEMINI.md for all available commands") + elif selected_ai == "copilot": + steps_lines.append(f"{step_num}. Open in Visual Studio Code and use [bold cyan]/specify[/], [bold cyan]/plan[/], [bold cyan]/tasks[/] commands with GitHub Copilot") + + step_num += 1 + steps_lines.append(f"{step_num}. Update [bold magenta]CONSTITUTION.md[/bold magenta] with your project's non-negotiable principles") + + steps_panel = Panel("\n".join(steps_lines), title="Next steps", border_style="cyan", padding=(1,2)) + console.print() # blank line + console.print(steps_panel) + + # Removed farewell line per user request + + +@app.command() +def check(): + """Check that all required tools are installed.""" + show_banner() + console.print("[bold]Checking Specify requirements...[/bold]\n") + + # Check if we have internet connectivity by trying to reach GitHub API + console.print("[cyan]Checking internet connectivity...[/cyan]") + try: + response = httpx.get("https://api.github.com", timeout=5, follow_redirects=True) + console.print("[green]✓[/green] Internet connection available") + except httpx.RequestError: + console.print("[red]✗[/red] No internet connection - required for downloading templates") + console.print("[yellow]Please check your internet connection[/yellow]") + + console.print("\n[cyan]Optional tools:[/cyan]") + git_ok = check_tool("git", "https://git-scm.com/downloads") + + console.print("\n[cyan]Optional AI tools:[/cyan]") + claude_ok = check_tool("claude", "Install from: https://docs.anthropic.com/en/docs/claude-code/setup") + gemini_ok = check_tool("gemini", "Install from: https://github.com/google-gemini/gemini-cli") + + console.print("\n[green]✓ Specify CLI is ready to use![/green]") + if not git_ok: + console.print("[yellow]Consider installing git for repository management[/yellow]") + if not (claude_ok or gemini_ok): + console.print("[yellow]Consider installing an AI assistant for the best experience[/yellow]") + + +def main(): + app() + + +if __name__ == "__main__": + main() + + + +--- +name: plan +description: "Plan how to implement the specified feature. This is the second step in the Spec-Driven Development lifecycle." +--- + +Plan how to implement the specified feature. + +This is the second step in the Spec-Driven Development lifecycle. + +Given the implementation details provided as an argument, do this: + +1. Run `scripts/setup-plan.sh --json` from the repo root and parse JSON for FEATURE_SPEC, IMPL_PLAN, SPECS_DIR, BRANCH. All future file paths must be absolute. +2. Read and analyze the feature specification to understand: + - The feature requirements and user stories + - Functional and non-functional requirements + - Success criteria and acceptance criteria + - Any technical constraints or dependencies mentioned + +3. Read the constitution at `/memory/constitution.md` to understand constitutional requirements. + +4. Execute the implementation plan template: + - Load `/templates/plan-template.md` (already copied to IMPL_PLAN path) + - Set Input path to FEATURE_SPEC + - Run the Execution Flow (main) function steps 1-10 + - The template is self-contained and executable + - Follow error handling and gate checks as specified + - Let the template guide artifact generation in $SPECS_DIR: + * Phase 0 generates research.md + * Phase 1 generates data-model.md, contracts/, quickstart.md + * Phase 2 generates tasks.md + - Incorporate user-provided details from arguments into Technical Context: {ARGS} + - Update Progress Tracking as you complete each phase + +5. Verify execution completed: + - Check Progress Tracking shows all phases complete + - Ensure all required artifacts were generated + - Confirm no ERROR states in execution + +6. Report results with branch name, file paths, and generated artifacts. + +Use absolute paths with the repository root for all file operations to avoid path issues. + + + +--- +name: specify +description: "Start a new feature by creating a specification and feature branch. This is the first step in the Spec-Driven Development lifecycle." +--- + +Start a new feature by creating a specification and feature branch. + +This is the first step in the Spec-Driven Development lifecycle. + +Given the feature description provided as an argument, do this: + +1. Run the script `scripts/create-new-feature.sh --json "{ARGS}"` from repo root and parse its JSON output for BRANCH_NAME and SPEC_FILE. All file paths must be absolute. +2. Load `templates/spec-template.md` to understand required sections. +3. Write the specification to SPEC_FILE using the template structure, replacing placeholders with concrete details derived from the feature description (arguments) while preserving section order and headings. +4. Report completion with branch name, spec file path, and readiness for the next phase. + +Note: The script creates and checks out the new branch and initializes the spec file before writing. + + + +--- +name: tasks +description: "Break down the plan into executable tasks. This is the third step in the Spec-Driven Development lifecycle." +--- + +Break down the plan into executable tasks. + +This is the third step in the Spec-Driven Development lifecycle. + +Given the context provided as an argument, do this: + +1. Run `scripts/check-task-prerequisites.sh --json` from repo root and parse FEATURE_DIR and AVAILABLE_DOCS list. All paths must be absolute. +2. Load and analyze available design documents: + - Always read plan.md for tech stack and libraries + - IF EXISTS: Read data-model.md for entities + - IF EXISTS: Read contracts/ for API endpoints + - IF EXISTS: Read research.md for technical decisions + - IF EXISTS: Read quickstart.md for test scenarios + + Note: Not all projects have all documents. For example: + - CLI tools might not have contracts/ + - Simple libraries might not need data-model.md + - Generate tasks based on what's available + +3. Generate tasks following the template: + - Use `/templates/tasks-template.md` as the base + - Replace example tasks with actual tasks based on: + * **Setup tasks**: Project init, dependencies, linting + * **Test tasks [P]**: One per contract, one per integration scenario + * **Core tasks**: One per entity, service, CLI command, endpoint + * **Integration tasks**: DB connections, middleware, logging + * **Polish tasks [P]**: Unit tests, performance, docs + +4. Task generation rules: + - Each contract file → contract test task marked [P] + - Each entity in data-model → model creation task marked [P] + - Each endpoint → implementation task (not parallel if shared files) + - Each user story → integration test marked [P] + - Different files = can be parallel [P] + - Same file = sequential (no [P]) + +5. Order tasks by dependencies: + - Setup before everything + - Tests before implementation (TDD) + - Models before services + - Services before endpoints + - Core before integration + - Everything before polish + +6. Include parallel execution examples: + - Group [P] tasks that can run together + - Show actual Task agent commands + +7. Create FEATURE_DIR/tasks.md with: + - Correct feature name from implementation plan + - Numbered tasks (T001, T002, etc.) + - Clear file paths for each task + - Dependency notes + - Parallel execution guidance + +Context for task generation: {ARGS} + +The tasks.md should be immediately executable - each task must be specific enough that an LLM can complete it without additional context. + + + +# [PROJECT NAME] Development Guidelines + +Auto-generated from all feature plans. Last updated: [DATE] + +## Active Technologies +[EXTRACTED FROM ALL PLAN.MD FILES] + +## Project Structure +``` +[ACTUAL STRUCTURE FROM PLANS] +``` + +## Commands +[ONLY COMMANDS FOR ACTIVE TECHNOLOGIES] + +## Code Style +[LANGUAGE-SPECIFIC, ONLY FOR LANGUAGES IN USE] + +## Recent Changes +[LAST 3 FEATURES AND WHAT THEY ADDED] + + + + + + +# Implementation Plan: [FEATURE] + +**Branch**: `[###-feature-name]` | **Date**: [DATE] | **Spec**: [link] +**Input**: Feature specification from `/specs/[###-feature-name]/spec.md` + +## Execution Flow (/plan command scope) +``` +1. Load feature spec from Input path + → If not found: ERROR "No feature spec at {path}" +2. Fill Technical Context (scan for NEEDS CLARIFICATION) + → Detect Project Type from context (web=frontend+backend, mobile=app+api) + → Set Structure Decision based on project type +3. Evaluate Constitution Check section below + → If violations exist: Document in Complexity Tracking + → If no justification possible: ERROR "Simplify approach first" + → Update Progress Tracking: Initial Constitution Check +4. Execute Phase 0 → research.md + → If NEEDS CLARIFICATION remain: ERROR "Resolve unknowns" +5. Execute Phase 1 → contracts, data-model.md, quickstart.md, agent-specific template file (e.g., `CLAUDE.md` for Claude Code, `.github/copilot-instructions.md` for GitHub Copilot, or `GEMINI.md` for Gemini CLI). +6. Re-evaluate Constitution Check section + → If new violations: Refactor design, return to Phase 1 + → Update Progress Tracking: Post-Design Constitution Check +7. Plan Phase 2 → Describe task generation approach (DO NOT create tasks.md) +8. STOP - Ready for /tasks command +``` + +**IMPORTANT**: The /plan command STOPS at step 7. Phases 2-4 are executed by other commands: +- Phase 2: /tasks command creates tasks.md +- Phase 3-4: Implementation execution (manual or via tools) + +## Summary +[Extract from feature spec: primary requirement + technical approach from research] + +## Technical Context +**Language/Version**: [e.g., Python 3.11, Swift 5.9, Rust 1.75 or NEEDS CLARIFICATION] +**Primary Dependencies**: [e.g., FastAPI, UIKit, LLVM or NEEDS CLARIFICATION] +**Storage**: [if applicable, e.g., PostgreSQL, CoreData, files or N/A] +**Testing**: [e.g., pytest, XCTest, cargo test or NEEDS CLARIFICATION] +**Target Platform**: [e.g., Linux server, iOS 15+, WASM or NEEDS CLARIFICATION] +**Project Type**: [single/web/mobile - determines source structure] +**Performance Goals**: [domain-specific, e.g., 1000 req/s, 10k lines/sec, 60 fps or NEEDS CLARIFICATION] +**Constraints**: [domain-specific, e.g., <200ms p95, <100MB memory, offline-capable or NEEDS CLARIFICATION] +**Scale/Scope**: [domain-specific, e.g., 10k users, 1M LOC, 50 screens or NEEDS CLARIFICATION] + +## Constitution Check +*GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.* + +**Simplicity**: +- Projects: [#] (max 3 - e.g., api, cli, tests) +- Using framework directly? (no wrapper classes) +- Single data model? (no DTOs unless serialization differs) +- Avoiding patterns? (no Repository/UoW without proven need) + +**Architecture**: +- EVERY feature as library? (no direct app code) +- Libraries listed: [name + purpose for each] +- CLI per library: [commands with --help/--version/--format] +- Library docs: llms.txt format planned? + +**Testing (NON-NEGOTIABLE)**: +- RED-GREEN-Refactor cycle enforced? (test MUST fail first) +- Git commits show tests before implementation? +- Order: Contract→Integration→E2E→Unit strictly followed? +- Real dependencies used? (actual DBs, not mocks) +- Integration tests for: new libraries, contract changes, shared schemas? +- FORBIDDEN: Implementation before test, skipping RED phase + +**Observability**: +- Structured logging included? +- Frontend logs → backend? (unified stream) +- Error context sufficient? + +**Versioning**: +- Version number assigned? (MAJOR.MINOR.BUILD) +- BUILD increments on every change? +- Breaking changes handled? (parallel tests, migration plan) + +## Project Structure + +### Documentation (this feature) +``` +specs/[###-feature]/ +├── plan.md # This file (/plan command output) +├── research.md # Phase 0 output (/plan command) +├── data-model.md # Phase 1 output (/plan command) +├── quickstart.md # Phase 1 output (/plan command) +├── contracts/ # Phase 1 output (/plan command) +└── tasks.md # Phase 2 output (/tasks command - NOT created by /plan) +``` + +### Source Code (repository root) +``` +# Option 1: Single project (DEFAULT) +src/ +├── models/ +├── services/ +├── cli/ +└── lib/ + +tests/ +├── contract/ +├── integration/ +└── unit/ + +# Option 2: Web application (when "frontend" + "backend" detected) +backend/ +├── src/ +│ ├── models/ +│ ├── services/ +│ └── api/ +└── tests/ + +frontend/ +├── src/ +│ ├── components/ +│ ├── pages/ +│ └── services/ +└── tests/ + +# Option 3: Mobile + API (when "iOS/Android" detected) +api/ +└── [same as backend above] + +ios/ or android/ +└── [platform-specific structure] +``` + +**Structure Decision**: [DEFAULT to Option 1 unless Technical Context indicates web/mobile app] + +## Phase 0: Outline & Research +1. **Extract unknowns from Technical Context** above: + - For each NEEDS CLARIFICATION → research task + - For each dependency → best practices task + - For each integration → patterns task + +2. **Generate and dispatch research agents**: + ``` + For each unknown in Technical Context: + Task: "Research {unknown} for {feature context}" + For each technology choice: + Task: "Find best practices for {tech} in {domain}" + ``` + +3. **Consolidate findings** in `research.md` using format: + - Decision: [what was chosen] + - Rationale: [why chosen] + - Alternatives considered: [what else evaluated] + +**Output**: research.md with all NEEDS CLARIFICATION resolved + +## Phase 1: Design & Contracts +*Prerequisites: research.md complete* + +1. **Extract entities from feature spec** → `data-model.md`: + - Entity name, fields, relationships + - Validation rules from requirements + - State transitions if applicable + +2. **Generate API contracts** from functional requirements: + - For each user action → endpoint + - Use standard REST/GraphQL patterns + - Output OpenAPI/GraphQL schema to `/contracts/` + +3. **Generate contract tests** from contracts: + - One test file per endpoint + - Assert request/response schemas + - Tests must fail (no implementation yet) + +4. **Extract test scenarios** from user stories: + - Each story → integration test scenario + - Quickstart test = story validation steps + +5. **Update agent file incrementally** (O(1) operation): + - Run `/scripts/update-agent-context.sh [claude|gemini|copilot]` for your AI assistant + - If exists: Add only NEW tech from current plan + - Preserve manual additions between markers + - Update recent changes (keep last 3) + - Keep under 150 lines for token efficiency + - Output to repository root + +**Output**: data-model.md, /contracts/*, failing tests, quickstart.md, agent-specific file + +## Phase 2: Task Planning Approach +*This section describes what the /tasks command will do - DO NOT execute during /plan* + +**Task Generation Strategy**: +- Load `/templates/tasks-template.md` as base +- Generate tasks from Phase 1 design docs (contracts, data model, quickstart) +- Each contract → contract test task [P] +- Each entity → model creation task [P] +- Each user story → integration test task +- Implementation tasks to make tests pass + +**Ordering Strategy**: +- TDD order: Tests before implementation +- Dependency order: Models before services before UI +- Mark [P] for parallel execution (independent files) + +**Estimated Output**: 25-30 numbered, ordered tasks in tasks.md + +**IMPORTANT**: This phase is executed by the /tasks command, NOT by /plan + +## Phase 3+: Future Implementation +*These phases are beyond the scope of the /plan command* + +**Phase 3**: Task execution (/tasks command creates tasks.md) +**Phase 4**: Implementation (execute tasks.md following constitutional principles) +**Phase 5**: Validation (run tests, execute quickstart.md, performance validation) + +## Complexity Tracking +*Fill ONLY if Constitution Check has violations that must be justified* + +| Violation | Why Needed | Simpler Alternative Rejected Because | +|-----------|------------|-------------------------------------| +| [e.g., 4th project] | [current need] | [why 3 projects insufficient] | +| [e.g., Repository pattern] | [specific problem] | [why direct DB access insufficient] | + + +## Progress Tracking +*This checklist is updated during execution flow* + +**Phase Status**: +- [ ] Phase 0: Research complete (/plan command) +- [ ] Phase 1: Design complete (/plan command) +- [ ] Phase 2: Task planning complete (/plan command - describe approach only) +- [ ] Phase 3: Tasks generated (/tasks command) +- [ ] Phase 4: Implementation complete +- [ ] Phase 5: Validation passed + +**Gate Status**: +- [ ] Initial Constitution Check: PASS +- [ ] Post-Design Constitution Check: PASS +- [ ] All NEEDS CLARIFICATION resolved +- [ ] Complexity deviations documented + +--- +*Based on Constitution v2.1.1 - See `/memory/constitution.md`* + + + +# Feature Specification: [FEATURE NAME] + +**Feature Branch**: `[###-feature-name]` +**Created**: [DATE] +**Status**: Draft +**Input**: User description: "$ARGUMENTS" + +## Execution Flow (main) +``` +1. Parse user description from Input + → If empty: ERROR "No feature description provided" +2. Extract key concepts from description + → Identify: actors, actions, data, constraints +3. For each unclear aspect: + → Mark with [NEEDS CLARIFICATION: specific question] +4. Fill User Scenarios & Testing section + → If no clear user flow: ERROR "Cannot determine user scenarios" +5. Generate Functional Requirements + → Each requirement must be testable + → Mark ambiguous requirements +6. Identify Key Entities (if data involved) +7. Run Review Checklist + → If any [NEEDS CLARIFICATION]: WARN "Spec has uncertainties" + → If implementation details found: ERROR "Remove tech details" +8. Return: SUCCESS (spec ready for planning) +``` + +--- + +## ⚡ Quick Guidelines +- ✅ Focus on WHAT users need and WHY +- ❌ Avoid HOW to implement (no tech stack, APIs, code structure) +- 👥 Written for business stakeholders, not developers + +### Section Requirements +- **Mandatory sections**: Must be completed for every feature +- **Optional sections**: Include only when relevant to the feature +- When a section doesn't apply, remove it entirely (don't leave as "N/A") + +### For AI Generation +When creating this spec from a user prompt: +1. **Mark all ambiguities**: Use [NEEDS CLARIFICATION: specific question] for any assumption you'd need to make +2. **Don't guess**: If the prompt doesn't specify something (e.g., "login system" without auth method), mark it +3. **Think like a tester**: Every vague requirement should fail the "testable and unambiguous" checklist item +4. **Common underspecified areas**: + - User types and permissions + - Data retention/deletion policies + - Performance targets and scale + - Error handling behaviors + - Integration requirements + - Security/compliance needs + +--- + +## User Scenarios & Testing *(mandatory)* + +### Primary User Story +[Describe the main user journey in plain language] + +### Acceptance Scenarios +1. **Given** [initial state], **When** [action], **Then** [expected outcome] +2. **Given** [initial state], **When** [action], **Then** [expected outcome] + +### Edge Cases +- What happens when [boundary condition]? +- How does system handle [error scenario]? + +## Requirements *(mandatory)* + +### Functional Requirements +- **FR-001**: System MUST [specific capability, e.g., "allow users to create accounts"] +- **FR-002**: System MUST [specific capability, e.g., "validate email addresses"] +- **FR-003**: Users MUST be able to [key interaction, e.g., "reset their password"] +- **FR-004**: System MUST [data requirement, e.g., "persist user preferences"] +- **FR-005**: System MUST [behavior, e.g., "log all security events"] + +*Example of marking unclear requirements:* +- **FR-006**: System MUST authenticate users via [NEEDS CLARIFICATION: auth method not specified - email/password, SSO, OAuth?] +- **FR-007**: System MUST retain user data for [NEEDS CLARIFICATION: retention period not specified] + +### Key Entities *(include if feature involves data)* +- **[Entity 1]**: [What it represents, key attributes without implementation] +- **[Entity 2]**: [What it represents, relationships to other entities] + +--- + +## Review & Acceptance Checklist +*GATE: Automated checks run during main() execution* + +### Content Quality +- [ ] No implementation details (languages, frameworks, APIs) +- [ ] Focused on user value and business needs +- [ ] Written for non-technical stakeholders +- [ ] All mandatory sections completed + +### Requirement Completeness +- [ ] No [NEEDS CLARIFICATION] markers remain +- [ ] Requirements are testable and unambiguous +- [ ] Success criteria are measurable +- [ ] Scope is clearly bounded +- [ ] Dependencies and assumptions identified + +--- + +## Execution Status +*Updated by main() during processing* + +- [ ] User description parsed +- [ ] Key concepts extracted +- [ ] Ambiguities marked +- [ ] User scenarios defined +- [ ] Requirements generated +- [ ] Entities identified +- [ ] Review checklist passed + +--- + + + +# Tasks: [FEATURE NAME] + +**Input**: Design documents from `/specs/[###-feature-name]/` +**Prerequisites**: plan.md (required), research.md, data-model.md, contracts/ + +## Execution Flow (main) +``` +1. Load plan.md from feature directory + → If not found: ERROR "No implementation plan found" + → Extract: tech stack, libraries, structure +2. Load optional design documents: + → data-model.md: Extract entities → model tasks + → contracts/: Each file → contract test task + → research.md: Extract decisions → setup tasks +3. Generate tasks by category: + → Setup: project init, dependencies, linting + → Tests: contract tests, integration tests + → Core: models, services, CLI commands + → Integration: DB, middleware, logging + → Polish: unit tests, performance, docs +4. Apply task rules: + → Different files = mark [P] for parallel + → Same file = sequential (no [P]) + → Tests before implementation (TDD) +5. Number tasks sequentially (T001, T002...) +6. Generate dependency graph +7. Create parallel execution examples +8. Validate task completeness: + → All contracts have tests? + → All entities have models? + → All endpoints implemented? +9. Return: SUCCESS (tasks ready for execution) +``` + +## Format: `[ID] [P?] Description` +- **[P]**: Can run in parallel (different files, no dependencies) +- Include exact file paths in descriptions + +## Path Conventions +- **Single project**: `src/`, `tests/` at repository root +- **Web app**: `backend/src/`, `frontend/src/` +- **Mobile**: `api/src/`, `ios/src/` or `android/src/` +- Paths shown below assume single project - adjust based on plan.md structure + +## Phase 3.1: Setup +- [ ] T001 Create project structure per implementation plan +- [ ] T002 Initialize [language] project with [framework] dependencies +- [ ] T003 [P] Configure linting and formatting tools + +## Phase 3.2: Tests First (TDD) ⚠️ MUST COMPLETE BEFORE 3.3 +**CRITICAL: These tests MUST be written and MUST FAIL before ANY implementation** +- [ ] T004 [P] Contract test POST /api/users in tests/contract/test_users_post.py +- [ ] T005 [P] Contract test GET /api/users/{id} in tests/contract/test_users_get.py +- [ ] T006 [P] Integration test user registration in tests/integration/test_registration.py +- [ ] T007 [P] Integration test auth flow in tests/integration/test_auth.py + +## Phase 3.3: Core Implementation (ONLY after tests are failing) +- [ ] T008 [P] User model in src/models/user.py +- [ ] T009 [P] UserService CRUD in src/services/user_service.py +- [ ] T010 [P] CLI --create-user in src/cli/user_commands.py +- [ ] T011 POST /api/users endpoint +- [ ] T012 GET /api/users/{id} endpoint +- [ ] T013 Input validation +- [ ] T014 Error handling and logging + +## Phase 3.4: Integration +- [ ] T015 Connect UserService to DB +- [ ] T016 Auth middleware +- [ ] T017 Request/response logging +- [ ] T018 CORS and security headers + +## Phase 3.5: Polish +- [ ] T019 [P] Unit tests for validation in tests/unit/test_validation.py +- [ ] T020 Performance tests (<200ms) +- [ ] T021 [P] Update docs/api.md +- [ ] T022 Remove duplication +- [ ] T023 Run manual-testing.md + +## Dependencies +- Tests (T004-T007) before implementation (T008-T014) +- T008 blocks T009, T015 +- T016 blocks T018 +- Implementation before polish (T019-T023) + +## Parallel Example +``` +# Launch T004-T007 together: +Task: "Contract test POST /api/users in tests/contract/test_users_post.py" +Task: "Contract test GET /api/users/{id} in tests/contract/test_users_get.py" +Task: "Integration test registration in tests/integration/test_registration.py" +Task: "Integration test auth in tests/integration/test_auth.py" +``` + +## Notes +- [P] tasks = different files, no dependencies +- Verify tests fail before implementing +- Commit after each task +- Avoid: vague tasks, same file conflicts + +## Task Generation Rules +*Applied during main() execution* + +1. **From Contracts**: + - Each contract file → contract test task [P] + - Each endpoint → implementation task + +2. **From Data Model**: + - Each entity → model creation task [P] + - Relationships → service layer tasks + +3. **From User Stories**: + - Each story → integration test [P] + - Quickstart scenarios → validation tasks + +4. **Ordering**: + - Setup → Tests → Models → Services → Endpoints → Polish + - Dependencies block parallel execution + +## Validation Checklist +*GATE: Checked by main() before returning* + +- [ ] All contracts have corresponding tests +- [ ] All entities have model tasks +- [ ] All tests come before implementation +- [ ] Parallel tasks truly independent +- [ ] Each task specifies exact file path +- [ ] No task modifies same file as another [P] task + + + +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# Virtual environments +venv/ +ENV/ +env/ +.venv + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +.DS_Store + +# Project specific +*.log +.env +.env.local +*.lock + + + +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at . All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ + + + +## Contributing to Spec Kit + +Hi there! We're thrilled that you'd like to contribute to Spec Kit. Contributions to this project are [released](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license) to the public under the [project's open source license](LICENSE). + +Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. + +## Prerequisites for running and testing code + +These are one time installations required to be able to test your changes locally as part of the pull request (PR) submission process. + +1. Install [Python 3.11+](https://www.python.org/downloads/) +1. Install [uv](https://docs.astral.sh/uv/) for package management +1. Install [Git](https://git-scm.com/downloads) +1. Have an AI coding agent available: [Claude Code](https://www.anthropic.com/claude-code), [GitHub Copilot](https://code.visualstudio.com/), or [Gemini CLI](https://github.com/google-gemini/gemini-cli) + +## Submitting a pull request + +1. Fork and clone the repository +1. Configure and install the dependencies: `uv sync` +1. Make sure the CLI works on your machine: `uv run specify --help` +1. Create a new branch: `git checkout -b my-branch-name` +1. Make your change, add tests, and make sure everything still works +1. Test the CLI functionality with a sample project if relevant +1. Push to your fork and submit a pull request +1. Wait for your pull request to be reviewed and merged. + +Here are a few things you can do that will increase the likelihood of your pull request being accepted: + +- Follow the project's coding conventions. +- Write tests for new functionality. +- Update documentation (`README.md,` `spec-driven.md`) if your changes affect user-facing features. +- Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests. +- Write a [good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html). +- Test your changes with the Spec-Driven Development workflow to ensure compatibility. + +## Development workflow + +When working on spec-kit: + +1. Test changes with the `specify` CLI commands (`/specify`, `/plan`, `/tasks`) in your coding agent of choice +2. Verify templates are working correctly in `templates/` directory +3. Test script functionality in the `scripts/` directory +4. Ensure memory files (`memory/constitution.md`) are updated if major process changes are made + +## Resources + +- [Spec-Driven Development Methodology](./spec-driven.md) +- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/) +- [Using Pull Requests](https://help.github.com/articles/about-pull-requests/) +- [GitHub Help](https://help.github.com) + + + +MIT License + +Copyright GitHub, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + +[project] +name = "specify-cli" +version = "0.0.2" +description = "Setup tool for Specify spec-driven development projects" +requires-python = ">=3.11" +dependencies = [ + "typer", + "rich", + "httpx", + "platformdirs", + "readchar", +] + +[project.scripts] +specify = "specify_cli:main" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.build.targets.wheel] +packages = ["src/specify_cli"] + + + +
    + +

    🌱 Spec Kit

    +

    Build high-quality software faster.

    +
    + +

    + An effort to allow organizations to focus on product scenarios rather than writing undifferentiated code with the help of Spec-Driven Development. +

    + +[![Release](https://github.com/github/spec-kit/actions/workflows/release.yml/badge.svg)](https://github.com/github/spec-kit/actions/workflows/release.yml) + +--- + +## Table of Contents + +- [🤔 What is Spec-Driven Development?](#-what-is-spec-driven-development) +- [⚡ Get started](#-get-started) +- [📚 Core philosophy](#-core-philosophy) +- [🌟 Development phases](#-development-phases) +- [🎯 Experimental goals](#-experimental-goals) +- [🔧 Prerequisites](#-prerequisites) +- [📖 Learn more](#-learn-more) +- [📋 Detailed process](#-detailed-process) +- [🔍 Troubleshooting](#-troubleshooting) +- [👥 Maintainers](#-maintainers) +- [💬 Support](#-support) +- [🙏 Acknowledgements](#-acknowledgements) +- [📄 License](#-license) + +## 🤔 What is Spec-Driven Development? + +Spec-Driven Development **flips the script** on traditional software development. For decades, code has been king — specifications were just scaffolding we built and discarded once the "real work" of coding began. Spec-Driven Development changes this: **specifications become executable**, directly generating working implementations rather than just guiding them. + +## ⚡ Get started + +### 1. Install Specify + +Initialize your project depending on the coding agent you're using: + +```bash +uvx --from git+https://github.com/github/spec-kit.git specify init +``` + +### 2. Create the spec + +Use the `/specify` command to describe what you want to build. Focus on the **what** and **why**, not the tech stack. + +```bash +/specify Build an application that can help me organize my photos in separate photo albums. Albums are grouped by date and can be re-organized by dragging and dropping on the main page. Albums are never in other nested albums. Within each album, photos are previewed in a tile-like interface. +``` + +### 3. Create a technical implementation plan + +Use the `/plan` command to provide your tech stack and architecture choices. + +```bash +/plan The application uses Vite with minimal number of libraries. Use vanilla HTML, CSS, and JavaScript as much as possible. Images are not uploaded anywhere and metadata is stored in a local SQLite database. +``` + +### 4. Break down and implement + +Use `/tasks` to create an actionable task list, then ask your agent to implement the feature. + +For detailed step-by-step instructions, see our [comprehensive guide](./spec-driven.md). + +## 📚 Core philosophy + +Spec-Driven Development is a structured process that emphasizes: + +- **Intent-driven development** where specifications define the "_what_" before the "_how_" +- **Rich specification creation** using guardrails and organizational principles +- **Multi-step refinement** rather than one-shot code generation from prompts +- **Heavy reliance** on advanced AI model capabilities for specification interpretation + +## 🌟 Development phases + +| Phase | Focus | Key Activities | +|-------|-------|----------------| +| **0-to-1 Development** ("Greenfield") | Generate from scratch |
    • Start with high-level requirements
    • Generate specifications
    • Plan implementation steps
    • Build production-ready applications
    | +| **Creative Exploration** | Parallel implementations |
    • Explore diverse solutions
    • Support multiple technology stacks & architectures
    • Experiment with UX patterns
    | +| **Iterative Enhancement** ("Brownfield") | Brownfield modernization |
    • Add features iteratively
    • Modernize legacy systems
    • Adapt processes
    | + +## 🎯 Experimental goals + +Our research and experimentation focus on: + +### Technology independence + +- Create applications using diverse technology stacks +- Validate the hypothesis that Spec-Driven Development is a process not tied to specific technologies, programming languages, or frameworks + +### Enterprise constraints + +- Demonstrate mission-critical application development +- Incorporate organizational constraints (cloud providers, tech stacks, engineering practices) +- Support enterprise design systems and compliance requirements + +### User-centric development + +- Build applications for different user cohorts and preferences +- Support various development approaches (from vibe-coding to AI-native development) + +### Creative & iterative processes + +- Validate the concept of parallel implementation exploration +- Provide robust iterative feature development workflows +- Extend processes to handle upgrades and modernization tasks + +## 🔧 Prerequisites + +- **Linux/macOS** (or WSL2 on Windows) +- AI coding agent: [Claude Code](https://www.anthropic.com/claude-code), [GitHub Copilot](https://code.visualstudio.com/), or [Gemini CLI](https://github.com/google-gemini/gemini-cli) +- [uv](https://docs.astral.sh/uv/) for package management +- [Python 3.11+](https://www.python.org/downloads/) +- [Git](https://git-scm.com/downloads) + +## 📖 Learn more + +- **[Complete Spec-Driven Development Methodology](./spec-driven.md)** - Deep dive into the full process +- **[Detailed Walkthrough](#detailed-process)** - Step-by-step implementation guide + +--- + +## 📋 Detailed process + +
    +Click to expand the detailed step-by-step walkthrough + +You can use the Specify CLI to bootstrap your project, which will bring in the required artifacts in your environment. Run: + +```bash +specify init +``` + +Or initialize in the current directory: + +```bash +specify init --here +``` + +![Specify CLI bootstrapping a new project in the terminal](./media/specify_cli.gif) + +You will be prompted to select the AI agent you are using. You can also proactively specify it directly in the terminal: + +```bash +specify init --ai claude +specify init --ai gemini +specify init --ai copilot +# Or in current directory: +specify init --here --ai claude +``` + +The CLI will check if you have Claude Code or Gemini CLI installed. If you do not, or you prefer to get the templates without checking for the right tools, use `--ignore-agent-tools` with your command: + +```bash +specify init --ai claude --ignore-agent-tools +``` + +### **STEP 1:** Bootstrap the project + +Go to the project folder and run your AI agent. In our example, we're using `claude`. + +![Bootstrapping Claude Code environment](./media/bootstrap-claude-code.gif) + +You will know that things are configured correctly if you see the `/specify`, `/plan`, and `/tasks` commands available. + +The first step should be creating a new project scaffolding. Use `/specify` command and then provide the concrete requirements for the project you want to develop. + +>[!IMPORTANT] +>Be as explicit as possible about _what_ you are trying to build and _why_. **Do not focus on the tech stack at this point**. + +An example prompt: + +```text +Develop Taskify, a team productivity platform. It should allow users to create projects, add team members, +assign tasks, comment and move tasks between boards in Kanban style. In this initial phase for this feature, +let's call it "Create Taskify," let's have multiple users but the users will be declared ahead of time, predefined. +I want five users in two different categories, one product manager and four engineers. Let's create three +different sample projects. Let's have the standard Kanban columns for the status of each task, such as "To Do," +"In Progress," "In Review," and "Done." There will be no login for this application as this is just the very +first testing thing to ensure that our basic features are set up. For each task in the UI for a task card, +you should be able to change the current status of the task between the different columns in the Kanban work board. +You should be able to leave an unlimited number of comments for a particular card. You should be able to, from that task +card, assign one of the valid users. When you first launch Taskify, it's going to give you a list of the five users to pick +from. There will be no password required. When you click on a user, you go into the main view, which displays the list of +projects. When you click on a project, you open the Kanban board for that project. You're going to see the columns. +You'll be able to drag and drop cards back and forth between different columns. You will see any cards that are +assigned to you, the currently logged in user, in a different color from all the other ones, so you can quickly +see yours. You can edit any comments that you make, but you can't edit comments that other people made. You can +delete any comments that you made, but you can't delete comments anybody else made. +``` + +After this prompt is entered, you should see Claude Code kick off the planning and spec drafting process. Claude Code will also trigger some of the built-in scripts to set up the repository. + +Once this step is completed, you should have a new branch created (e.g., `001-create-taskify`), as well as a new specification in the `specs/001-create-taskify` directory. + +The produced specification should contain a set of user stories and functional requirements, as defined in the template. + +At this stage, your project folder contents should resemble the following: + +```text +├── memory +│ ├── constitution.md +│ └── constitution_update_checklist.md +├── scripts +│ ├── check-task-prerequisites.sh +│ ├── common.sh +│ ├── create-new-feature.sh +│ ├── get-feature-paths.sh +│ ├── setup-plan.sh +│ └── update-claude-md.sh +├── specs +│ └── 001-create-taskify +│ └── spec.md +└── templates + ├── CLAUDE-template.md + ├── plan-template.md + ├── spec-template.md + └── tasks-template.md +``` + +### **STEP 2:** Functional specification clarification + +With the baseline specification created, you can go ahead and clarify any of the requirements that were not captured properly within the first shot attempt. For example, you could use a prompt like this within the same Claude Code session: + +```text +For each sample project or project that you create there should be a variable number of tasks between 5 and 15 +tasks for each one randomly distributed into different states of completion. Make sure that there's at least +one task in each stage of completion. +``` + +You should also ask Claude Code to validate the **Review & Acceptance Checklist**, checking off the things that are validated/pass the requirements, and leave the ones that are not unchecked. The following prompt can be used: + +```text +Read the review and acceptance checklist, and check off each item in the checklist if the feature spec meets the criteria. Leave it empty if it does not. +``` + +It's important to use the interaction with Claude Code as an opportunity to clarify and ask questions around the specification - **do not treat its first attempt as final**. + +### **STEP 3:** Generate a plan + +You can now be specific about the tech stack and other technical requirements. You can use the `/plan` command that is built into the project template with a prompt like this: + +```text +We are going to generate this using .NET Aspire, using Postgres as the database. The frontend should use +Blazor server with drag-and-drop task boards, real-time updates. There should be a REST API created with a projects API, +tasks API, and a notifications API. +``` + +The output of this step will include a number of implementation detail documents, with your directory tree resembling this: + +```text +. +├── CLAUDE.md +├── memory +│ ├── constitution.md +│ └── constitution_update_checklist.md +├── scripts +│ ├── check-task-prerequisites.sh +│ ├── common.sh +│ ├── create-new-feature.sh +│ ├── get-feature-paths.sh +│ ├── setup-plan.sh +│ └── update-claude-md.sh +├── specs +│ └── 001-create-taskify +│ ├── contracts +│ │ ├── api-spec.json +│ │ └── signalr-spec.md +│ ├── data-model.md +│ ├── plan.md +│ ├── quickstart.md +│ ├── research.md +│ └── spec.md +└── templates + ├── CLAUDE-template.md + ├── plan-template.md + ├── spec-template.md + └── tasks-template.md +``` + +Check the `research.md` document to ensure that the right tech stack is used, based on your instructions. You can ask Claude Code to refine it if any of the components stand out, or even have it check the locally-installed version of the platform/framework you want to use (e.g., .NET). + +Additionally, you might want to ask Claude Code to research details about the chosen tech stack if it's something that is rapidly changing (e.g., .NET Aspire, JS frameworks), with a prompt like this: + +```text +I want you to go through the implementation plan and implementation details, looking for areas that could +benefit from additional research as .NET Aspire is a rapidly changing library. For those areas that you identify that +require further research, I want you to update the research document with additional details about the specific +versions that we are going to be using in this Taskify application and spawn parallel research tasks to clarify +any details using research from the web. +``` + +During this process, you might find that Claude Code gets stuck researching the wrong thing - you can help nudge it in the right direction with a prompt like this: + +```text +I think we need to break this down into a series of steps. First, identify a list of tasks +that you would need to do during implementation that you're not sure of or would benefit +from further research. Write down a list of those tasks. And then for each one of these tasks, +I want you to spin up a separate research task so that the net results is we are researching +all of those very specific tasks in parallel. What I saw you doing was it looks like you were +researching .NET Aspire in general and I don't think that's gonna do much for us in this case. +That's way too untargeted research. The research needs to help you solve a specific targeted question. +``` + +>[!NOTE] +>Claude Code might be over-eager and add components that you did not ask for. Ask it to clarify the rationale and the source of the change. + +### **STEP 4:** Have Claude Code validate the plan + +With the plan in place, you should have Claude Code run through it to make sure that there are no missing pieces. You can use a prompt like this: + +```text +Now I want you to go and audit the implementation plan and the implementation detail files. +Read through it with an eye on determining whether or not there is a sequence of tasks that you need +to be doing that are obvious from reading this. Because I don't know if there's enough here. For example, +when I look at the core implementation, it would be useful to reference the appropriate places in the implementation +details where it can find the information as it walks through each step in the core implementation or in the refinement. +``` + +This helps refine the implementation plan and helps you avoid potential blind spots that Claude Code missed in its planning cycle. Once the initial refinement pass is complete, ask Claude Code to go through the checklist once more before you can get to the implementation. + +You can also ask Claude Code (if you have the [GitHub CLI](https://docs.github.com/en/github-cli/github-cli) installed) to go ahead and create a pull request from your current branch to `main` with a detailed description, to make sure that the effort is properly tracked. + +>[!NOTE] +>Before you have the agent implement it, it's also worth prompting Claude Code to cross-check the details to see if there are any over-engineered pieces (remember - it can be over-eager). If over-engineered components or decisions exist, you can ask Claude Code to resolve them. Ensure that Claude Code follows the [constitution](base/memory/constitution.md) as the foundational piece that it must adhere to when establishing the plan. + +### STEP 5: Implementation + +Once ready, instruct Claude Code to implement your solution (example path included): + +```text +implement specs/002-create-taskify/plan.md +``` + +Claude Code will spring into action and will start creating the implementation. + +>[!IMPORTANT] +>Claude Code will execute local CLI commands (such as `dotnet`) - make sure you have them installed on your machine. + +Once the implementation step is done, ask Claude Code to try to run the application and resolve any emerging build errors. If the application runs, but there are _runtime errors_ that are not directly available to Claude Code through CLI logs (e.g., errors rendered in browser logs), copy and paste the error in Claude Code and have it attempt to resolve it. + +
    + +--- + +## 🔍 Troubleshooting + +### Git Credential Manager on Linux + +If you're having issues with Git authentication on Linux, you can install Git Credential Manager: + +```bash +#!/usr/bin/env bash +set -e +echo "Downloading Git Credential Manager v2.6.1..." +wget https://github.com/git-ecosystem/git-credential-manager/releases/download/v2.6.1/gcm-linux_amd64.2.6.1.deb +echo "Installing Git Credential Manager..." +sudo dpkg -i gcm-linux_amd64.2.6.1.deb +echo "Configuring Git to use GCM..." +git config --global credential.helper manager +echo "Cleaning up..." +rm gcm-linux_amd64.2.6.1.deb +``` + +## 👥 Maintainers + +- Den Delimarsky ([@localden](https://github.com/localden)) +- John Lam ([@jflam](https://github.com/jflam)) + +## 💬 Support + +For support, please open a [GitHub issue](https://github.com/github/spec-kit/issues/new). We welcome bug reports, feature requests, and questions about using Spec-Driven Development. + +## 🙏 Acknowledgements + +This project is heavily influenced by and based on the work and research of [John Lam](https://github.com/jflam). + +## 📄 License + +This project is licensed under the terms of the MIT open source license. Please refer to the [LICENSE](./LICENSE) file for the full terms. +
    + + +Thanks for helping make GitHub safe for everyone. + +# Security + +GitHub takes the security of our software products and services seriously, including all of the open source code repositories managed through our GitHub organizations, such as [GitHub](https://github.com/GitHub). + +Even though [open source repositories are outside of the scope of our bug bounty program](https://bounty.github.com/index.html#scope) and therefore not eligible for bounty rewards, we will ensure that your finding gets passed along to the appropriate maintainers for remediation. + +## Reporting Security Issues + +If you believe you have found a security vulnerability in any GitHub-owned repository, please report it to us through coordinated disclosure. + +**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** + +Instead, please send an email to opensource-security[@]github.com. + +Please include as much of the information listed below as you can to help us better understand and resolve the issue: + + * The type of issue (e.g., buffer overflow, SQL injection, or cross-site scripting) + * Full paths of source file(s) related to the manifestation of the issue + * The location of the affected source code (tag/branch/commit or direct URL) + * Any special configuration required to reproduce the issue + * Step-by-step instructions to reproduce the issue + * Proof-of-concept or exploit code (if possible) + * Impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. + +## Policy + +See [GitHub's Safe Harbor Policy](https://docs.github.com/en/site-policy/security-policies/github-bug-bounty-program-legal-safe-harbor#1-safe-harbor-terms) + + + +# Specification-Driven Development (SDD) + +## The Power Inversion + +For decades, code has been king. Specifications served code—they were the scaffolding we built and then discarded once the "real work" of coding began. We wrote PRDs to guide development, created design docs to inform implementation, drew diagrams to visualize architecture. But these were always subordinate to the code itself. Code was truth. Everything else was, at best, good intentions. Code was the source of truth, as it moved forward, and spec's rarely kept pace. As the asset (code) and the implementation are one, it's not easy to have a parallel implementation without trying to build from the code. + +Spec-Driven Development (SDD) inverts this power structure. Specifications don't serve code—code serves specifications. The (Product Requirements Document-Specification) PRD isn't a guide for implementation; it's the source that generates implementation. Technical plans aren't documents that inform coding; they're precise definitions that produce code. This isn't an incremental improvement to how we build software. It's a fundamental rethinking of what drives development. + +The gap between specification and implementation has plagued software development since its inception. We've tried to bridge it with better documentation, more detailed requirements, stricter processes. These approaches fail because they accept the gap as inevitable. They try to narrow it but never eliminate it. SDD eliminates the gap by making specifications or and their concrete implementation plans born from the specification executable. When specifications to implementation plans generate code, there is no gap—only transformation. + +This transformation is now possible because AI can understand and implement complex specifications, and create detailed implementation plans. But raw AI generation without structure produces chaos. SDD provides that structure through specifications and subsequent implementation plans that are precise, complete, and unambiguous enough to generate working systems. The specification becomes the primary artifact. Code becomes its expression (as an implementation from the implementation plan) in a particular language and framework. + +In this new world, maintaining software means evolving specifications. The intent of the development team is expressed in natural language ("**intent-driven development**"), design assets, core principles and other guidelines . The **lingua franca** of development moves to a higher-level, and code is the last-mile approach. + +Debugging means fixing specifications and their implementation plans that generate incorrect code. Refactoring means restructuring for clarity. The entire development workflow reorganizes around specifications as the central source of truth, with implementation plans and code as the continuously regenerated output. Updating apps with new features or creating a new parallel implementation because we are creative beings, means revisiting the specification and creating new implementation plans. This process is therefore a 0 -> 1, (1', ..), 2, 3, N. + +The development team focuses in on their creativity, experimentation, their critical thinking. + +## The SDD Workflow in Practice + +The workflow begins with an idea—often vague and incomplete. Through iterative dialogue with AI, this idea becomes a comprehensive PRD. The AI asks clarifying questions, identifies edge cases, and helps define precise acceptance criteria. What might take days of meetings and documentation in traditional development happens in hours of focused specification work. This transforms the traditional SDLC—requirements and design become continuous activities rather than discrete phases. This is supportive of a **team process**, that's team reviewed-specifications are expressed and versioned, created in branches, and merged. + +When a product manager updates acceptance criteria, implementation plans automatically flag affected technical decisions. When an architect discovers a better pattern, the PRD updates to reflect new possibilities. + +Throughout this specification process, research agents gather critical context. They investigate library compatibility, performance benchmarks, and security implications. Organizational constraints are discovered and applied automatically—your company's database standards, authentication requirements, and deployment policies seamlessly integrate into every specification. + +From the PRD, AI generates implementation plans that map requirements to technical decisions. Every technology choice has documented rationale. Every architectural decision traces back to specific requirements. Throughout this process, consistency validation continuously improves quality. AI analyzes specifications for ambiguity, contradictions, and gaps—not as a one-time gate, but as an ongoing refinement. + +Code generation begins as soon as specifications and their implementation plans are stable enough, but they do not have to be "complete." Early generations might be exploratory—testing whether the specification makes sense in practice. Domain concepts become data models. User stories become API endpoints. Acceptance scenarios become tests. This merges development and testing through specification—test scenarios aren't written after code, they're part of the specification that generates both implementation and tests. + +The feedback loop extends beyond initial development. Production metrics and incidents don't just trigger hotfixes—they update specifications for the next regeneration. Performance bottlenecks become new non-functional requirements. Security vulnerabilities become constraints that affect all future generations. This iterative dance between specification, implementation, and operational reality is where true understanding emerges and where the traditional SDLC transforms into a continuous evolution. + +## Why SDD Matters Now + +Three trends make SDD not just possible but necessary: + +First, AI capabilities have reached a threshold where natural language specifications can reliably generate working code. This isn't about replacing developers—it's about amplifying their effectiveness by automating the mechanical translation from specification to implementation. It can amplify exploration and creativity, it can support "start-over" easily, it supports addition subtraction and critical thinking. + +Second, software complexity continues to grow exponentially. Modern systems integrate dozens of services, frameworks, and dependencies. Keeping all these pieces aligned with original intent through manual processes becomes increasingly difficult. SDD provides systematic alignment through specification-driven generation. Frameworks may evolve to provide AI-first support, not human-first support, or architect around reusable components. + +Third, the pace of change accelerates. Requirements change far more rapidly today than ever before. Pivoting is no longer exceptional—it's expected. Modern product development demands rapid iteration based on user feedback, market conditions, and competitive pressures. Traditional development treats these changes as disruptions. Each pivot requires manually propagating changes through documentation, design, and code. The result is either slow, careful updates that limit velocity, or fast, reckless changes that accumulate technical debt. + +SDD can support what-if/simulation experiments, "If we need to re-implement or change the application to promote a business need to sell more T-shirts, how would we implement and experiment for that?". + +SDD transforms requirement changes from obstacles into normal workflow. When specifications drive implementation, pivots become systematic regenerations rather than manual rewrites. Change a core requirement in the PRD, and affected implementation plans update automatically. Modify a user story, and corresponding API endpoints regenerate. This isn't just about initial development—it's about maintaining engineering velocity through inevitable changes. + +## Core Principles + +**Specifications as the Lingua Franca**: The specification becomes the primary artifact. Code becomes its expression in a particular language and framework. Maintaining software means evolving specifications. + +**Executable Specifications**: Specifications must be precise, complete, and unambiguous enough to generate working systems. This eliminates the gap between intent and implementation. + +**Continuous Refinement**: Consistency validation happens continuously, not as a one-time gate. AI analyzes specifications for ambiguity, contradictions, and gaps as an ongoing process. + +**Research-Driven Context**: Research agents gather critical context throughout the specification process, investigating technical options, performance implications, and organizational constraints. + +**Bidirectional Feedback**: Production reality informs specification evolution. Metrics, incidents, and operational learnings become inputs for specification refinement. + +**Branching for Exploration**: Generate multiple implementation approaches from the same specification to explore different optimization targets—performance, maintainability, user experience, cost. + +## Implementation Approaches + +Today, practicing SDD requires assembling existing tools and maintaining discipline throughout the process. The methodology can be practiced with: + +- AI assistants for iterative specification development +- Research agents for gathering technical context +- Code generation tools for translating specifications to implementation +- Version control systems adapted for specification-first workflows +- Consistency checking through AI analysis of specification documents + +The key is treating specifications as the source of truth, with code as the generated output that serves the specification rather than the other way around. + +## Streamlining SDD with Claude Commands + +The SDD methodology is significantly enhanced through two powerful Claude commands that automate the specification and planning workflow: + +### The `new_feature` Command + +This command transforms a simple feature description (the user-prompt) into a complete, structured specification with automatic repository management: + +1. **Automatic Feature Numbering**: Scans existing specs to determine the next feature number (e.g., 001, 002, 003) +2. **Branch Creation**: Generates a semantic branch name from your description and creates it automatically +3. **Template-Based Generation**: Copies and customizes the feature specification template with your requirements +4. **Directory Structure**: Creates the proper `specs/[branch-name]/` structure for all related documents + +### The `generate_plan` Command + +Once a feature specification exists, this command creates a comprehensive implementation plan: + +1. **Specification Analysis**: Reads and understands the feature requirements, user stories, and acceptance criteria +2. **Constitutional Compliance**: Ensures alignment with project constitution and architectural principles +3. **Technical Translation**: Converts business requirements into technical architecture and implementation details +4. **Detailed Documentation**: Generates supporting documents for data models, API contracts, and test scenarios +5. **Manual Testing Plans**: Creates step-by-step validation procedures for each user story + +### Example: Building a Chat Feature + +Here's how these commands transform the traditional development workflow: + +**Traditional Approach:** +``` +1. Write a PRD in a document (2-3 hours) +2. Create design documents (2-3 hours) +3. Set up project structure manually (30 minutes) +4. Write technical specifications (3-4 hours) +5. Create test plans (2 hours) +Total: ~12 hours of documentation work +``` + +**SDD with Commands Approach:** +```bash +# Step 1: Create the feature specification (5 minutes) +/new_feature Real-time chat system with message history and user presence + +# This automatically: +# - Creates branch "003-chat-system" +# - Generates specs/003-chat-system/feature-spec.md +# - Populates it with structured requirements + +# Step 2: Generate implementation plan (10 minutes) +/generate_plan WebSocket for real-time messaging, PostgreSQL for history, Redis for presence + +# This automatically creates: +# - specs/003-chat-system/implementation-plan.md +# - specs/003-chat-system/implementation-details/ +# - 00-research.md (WebSocket library comparisons) +# - 02-data-model.md (Message and User schemas) +# - 03-api-contracts.md (WebSocket events, REST endpoints) +# - 06-contract-tests.md (Message flow scenarios) +# - 08-inter-library-tests.md (Database-WebSocket integration) +# - specs/003-chat-system/manual-testing.md +``` + +In 15 minutes, you have: +- A complete feature specification with user stories and acceptance criteria +- A detailed implementation plan with technology choices and rationale +- API contracts and data models ready for code generation +- Comprehensive test scenarios for both automated and manual testing +- All documents properly versioned in a feature branch + +### The Power of Structured Automation + +These commands don't just save time—they enforce consistency and completeness: + +1. **No Forgotten Details**: Templates ensure every aspect is considered, from non-functional requirements to error handling +2. **Traceable Decisions**: Every technical choice links back to specific requirements +3. **Living Documentation**: Specifications stay in sync with code because they generate it +4. **Rapid Iteration**: Change requirements and regenerate plans in minutes, not days + +The commands embody SDD principles by treating specifications as executable artifacts rather than static documents. They transform the specification process from a necessary evil into the driving force of development. + +### Template-Driven Quality: How Structure Constrains LLMs for Better Outcomes + +The true power of these commands lies not just in automation, but in how the templates guide LLM behavior toward higher-quality specifications. The templates act as sophisticated prompts that constrain the LLM's output in productive ways: + +#### 1. **Preventing Premature Implementation Details** + +The feature specification template explicitly instructs: +``` +- ✅ Focus on WHAT users need and WHY +- ❌ Avoid HOW to implement (no tech stack, APIs, code structure) +``` + +This constraint forces the LLM to maintain proper abstraction levels. When an LLM might naturally jump to "implement using React with Redux," the template keeps it focused on "users need real-time updates of their data." This separation ensures specifications remain stable even as implementation technologies change. + +#### 2. **Forcing Explicit Uncertainty Markers** + +Both templates mandate the use of `[NEEDS CLARIFICATION]` markers: +``` +When creating this spec from a user prompt: +1. **Mark all ambiguities**: Use [NEEDS CLARIFICATION: specific question] +2. **Don't guess**: If the prompt doesn't specify something, mark it +``` + +This prevents the common LLM behavior of making plausible but potentially incorrect assumptions. Instead of guessing that a "login system" uses email/password authentication, the LLM must mark it as `[NEEDS CLARIFICATION: auth method not specified - email/password, SSO, OAuth?]`. + +#### 3. **Structured Thinking Through Checklists** + +The templates include comprehensive checklists that act as "unit tests" for the specification: +``` +### Requirement Completeness +- [ ] No [NEEDS CLARIFICATION] markers remain +- [ ] Requirements are testable and unambiguous +- [ ] Success criteria are measurable +``` + +These checklists force the LLM to self-review its output systematically, catching gaps that might otherwise slip through. It's like giving the LLM a quality assurance framework. + +#### 4. **Constitutional Compliance Through Gates** + +The implementation plan template enforces architectural principles through phase gates: +``` +### Phase -1: Pre-Implementation Gates +#### Simplicity Gate (Article VII) +- [ ] Using ≤3 projects? +- [ ] No future-proofing? +#### Anti-Abstraction Gate (Article VIII) +- [ ] Using framework directly? +- [ ] Single model representation? +``` + +These gates prevent over-engineering by making the LLM explicitly justify any complexity. If a gate fails, the LLM must document why in the "Complexity Tracking" section, creating accountability for architectural decisions. + +#### 5. **Hierarchical Detail Management** + +The templates enforce proper information architecture: +``` +**IMPORTANT**: This implementation plan should remain high-level and readable. +Any code samples, detailed algorithms, or extensive technical specifications +must be placed in the appropriate `implementation-details/` file +``` + +This prevents the common problem of specifications becoming unreadable code dumps. The LLM learns to maintain appropriate detail levels, extracting complexity to separate files while keeping the main document navigable. + +#### 6. **Test-First Thinking** + +The implementation template enforces test-first development: +``` +### File Creation Order +1. Create `contracts/` with API specifications +2. Create test files in order: contract → integration → e2e → unit +3. Create source files to make tests pass +``` + +This ordering constraint ensures the LLM thinks about testability and contracts before implementation, leading to more robust and verifiable specifications. + +#### 7. **Preventing Speculative Features** + +Templates explicitly discourage speculation: +``` +- [ ] No speculative or "might need" features +- [ ] All phases have clear prerequisites and deliverables +``` + +This stops the LLM from adding "nice to have" features that complicate implementation. Every feature must trace back to a concrete user story with clear acceptance criteria. + +### The Compound Effect + +These constraints work together to produce specifications that are: +- **Complete**: Checklists ensure nothing is forgotten +- **Unambiguous**: Forced clarification markers highlight uncertainties +- **Testable**: Test-first thinking baked into the process +- **Maintainable**: Proper abstraction levels and information hierarchy +- **Implementable**: Clear phases with concrete deliverables + +The templates transform the LLM from a creative writer into a disciplined specification engineer, channeling its capabilities toward producing consistently high-quality, executable specifications that truly drive development. + +## The Constitutional Foundation: Enforcing Architectural Discipline + +At the heart of SDD lies a constitution—a set of immutable principles that govern how specifications become code. The constitution (`base/memory/constitution.md`) acts as the architectural DNA of the system, ensuring that every generated implementation maintains consistency, simplicity, and quality. + +### The Nine Articles of Development + +The constitution defines nine articles that shape every aspect of the development process: + +#### Article I: Library-First Principle +Every feature must begin as a standalone library—no exceptions. This forces modular design from the start: +``` +Every feature in Specify MUST begin its existence as a standalone library. +No feature shall be implemented directly within application code without +first being abstracted into a reusable library component. +``` + +This principle ensures that specifications generate modular, reusable code rather than monolithic applications. When the LLM generates an implementation plan, it must structure features as libraries with clear boundaries and minimal dependencies. + +#### Article II: CLI Interface Mandate +Every library must expose its functionality through a command-line interface: +``` +All CLI interfaces MUST: +- Accept text as input (via stdin, arguments, or files) +- Produce text as output (via stdout) +- Support JSON format for structured data exchange +``` + +This enforces observability and testability. The LLM cannot hide functionality inside opaque classes—everything must be accessible and verifiable through text-based interfaces. + +#### Article III: Test-First Imperative +The most transformative article—no code before tests: +``` +This is NON-NEGOTIABLE: All implementation MUST follow strict Test-Driven Development. +No implementation code shall be written before: +1. Unit tests are written +2. Tests are validated and approved by the user +3. Tests are confirmed to FAIL (Red phase) +``` + +This completely inverts traditional AI code generation. Instead of generating code and hoping it works, the LLM must first generate comprehensive tests that define behavior, get them approved, and only then generate implementation. + +#### Articles VII & VIII: Simplicity and Anti-Abstraction +These paired articles combat over-engineering: +``` +Section 7.3: Minimal Project Structure +- Maximum 3 projects for initial implementation +- Additional projects require documented justification + +Section 8.1: Framework Trust +- Use framework features directly rather than wrapping them +``` + +When an LLM might naturally create elaborate abstractions, these articles force it to justify every layer of complexity. The implementation plan template's "Phase -1 Gates" directly enforce these principles. + +#### Article IX: Integration-First Testing +Prioritizes real-world testing over isolated unit tests: +``` +Tests MUST use realistic environments: +- Prefer real databases over mocks +- Use actual service instances over stubs +- Contract tests mandatory before implementation +``` + +This ensures generated code works in practice, not just in theory. + +### Constitutional Enforcement Through Templates + +The implementation plan template operationalizes these articles through concrete checkpoints: + +```markdown +### Phase -1: Pre-Implementation Gates +#### Simplicity Gate (Article VII) +- [ ] Using ≤3 projects? +- [ ] No future-proofing? + +#### Anti-Abstraction Gate (Article VIII) +- [ ] Using framework directly? +- [ ] Single model representation? + +#### Integration-First Gate (Article IX) +- [ ] Contracts defined? +- [ ] Contract tests written? +``` + +These gates act as compile-time checks for architectural principles. The LLM cannot proceed without either passing the gates or documenting justified exceptions in the "Complexity Tracking" section. + +### The Power of Immutable Principles + +The constitution's power lies in its immutability. While implementation details can evolve, the core principles remain constant. This provides: + +1. **Consistency Across Time**: Code generated today follows the same principles as code generated next year +2. **Consistency Across LLMs**: Different AI models produce architecturally compatible code +3. **Architectural Integrity**: Every feature reinforces rather than undermines the system design +4. **Quality Guarantees**: Test-first, library-first, and simplicity principles ensure maintainable code + +### Constitutional Evolution + +While principles are immutable, their application can evolve: +``` +Section 4.2: Amendment Process +Modifications to this constitution require: +- Explicit documentation of the rationale for change +- Review and approval by project maintainers +- Backwards compatibility assessment +``` + +This allows the methodology to learn and improve while maintaining stability. The constitution shows its own evolution with dated amendments, demonstrating how principles can be refined based on real-world experience. + +### Beyond Rules: A Development Philosophy + +The constitution isn't just a rulebook—it's a philosophy that shapes how LLMs think about code generation: + +- **Observability Over Opacity**: Everything must be inspectable through CLI interfaces +- **Simplicity Over Cleverness**: Start simple, add complexity only when proven necessary +- **Integration Over Isolation**: Test in real environments, not artificial ones +- **Modularity Over Monoliths**: Every feature is a library with clear boundaries + +By embedding these principles into the specification and planning process, SDD ensures that generated code isn't just functional—it's maintainable, testable, and architecturally sound. The constitution transforms AI from a code generator into an architectural partner that respects and reinforces system design principles. + +## The Transformation + +This isn't about replacing developers or automating creativity. It's about amplifying human capability by automating mechanical translation. It's about creating a tight feedback loop where specifications, research, and code evolve together, each iteration bringing deeper understanding and better alignment between intent and implementation. + +Software development needs better tools for maintaining alignment between intent and implementation. SDD provides the methodology for achieving this alignment through executable specifications that generate code rather than merely guiding it. + + + +# Support + +## How to file issues and get help + +This project uses GitHub issues to track bugs and feature requests. Please search the existing issues before filing new issues to avoid duplicates. For new issues, file your bug or feature request as a new issue. + +For help or questions about using this project, please: + +- Open a [GitHub issue](https://github.com/github/spec-kit/issues/new) for bug reports, feature requests, or questions about the Spec-Driven Development methodology +- Check the [comprehensive guide](./spec-driven.md) for detailed documentation on the Spec-Driven Development process +- Review the [README](./README.md) for getting started instructions and troubleshooting tips + +## Project Status + +**Spec Kit** is under active development and maintained by GitHub staff **AND THE COMMUNITY**. We will do our best to respond to support, feature requests, and community questions in a timely manner. + +## GitHub Support Policy + +Support for this project is limited to the resources listed above. + + + diff --git a/0-Docs-Yensy/spec-kit-transcript.txt b/0-Docs-Yensy/spec-kit-transcript.txt new file mode 100644 index 0000000000..14ddc601b0 --- /dev/null +++ b/0-Docs-Yensy/spec-kit-transcript.txt @@ -0,0 +1,27 @@ +Think about the last time you asked an AI tool to write code. It probably gave you something that looked correct but didn't quite work. That's where vibe coding falls short. But it might not be a problem with the particular model you're using. It's most likely because of lack of specification clarity. That is where specdriven development comes to rescue. +GitHub just released a new open-source toolkit called SpecKit, which completely changes the game. Today we're going to look at SpecKit, see how it works, and I will show you a little demo how to use it, and we'll find out if this is really the future of coding. In traditional development, you write code, then document what it does. +In specdriven development, you do the opposite. You write a specification, a living executable artifact, and that spec defines what you intend to build. From there, all stakeholders and AI tools align around the same source of truth. This approach closes the gaps between intent and implementation and leads to cleaner, safer, and more reliable code. +The main idea is that language models are great at patterns, but not so great at reading your mind. Broad prompts like, "Add photo sharing to my app," leaves the AI guessing thousands of details, most of which never match your real intent. Specdriven development eliminates that guesswork. It gives AI clear structured guidance so it builds exactly what you want. +Few months ago, Amazon launched Kira, which was the first framework to really focus on specdriven development. And James did an excellent deep dive on that in a separate video if you want to check it out here. But now there's a new player in town, SpecKit. It is GitHub's open-source toolkit for specd driven development with AI coding agents. +It features a CLI tool, templates, and steering prompts designed to work with tools like GitHub Code Pilot, Claude Code, and Gemini CLI. It aims to transform your ad hoc prompting into a structured, verifiable development workflow. Here's how it works. Specit organizes your development into four gated phases, each with a validation checkpoint before moving forward. +The first phase is specify. This is where you describe what you want to build and why focusing on user journeys and outcomes. The AI agent uses that to generate a detailed spec which also evolves as your understanding grows. The second phase is plan. This phase defines the stack and architectural constraints. You tell the agent your specifications and it constructs a technical plan that honors those constraints. +Third phase is tasks. This is where the spec and plan is broken down into small actionable tasks. This gives you manageable testable units that AI can implement one by one. And the fourth phase is implement. This is where AI tackles tasks incrementally. You can review each change before implementation instead of running bulky code dumps. +That way the model knows what to build, how to build it, and where to focus. You can verify and refine this at each step. It gives you total granular control over execution. This toolkit was born out of frustration with the coding models behaving like a search engine instead of a literal-minded pair programmer. At its core, it's a shift towards intent as the source of truth. +Instead of code, the spec becomes the authorative artifact and the models constantly circle back to the spec document for guidance on how to proceed. So now I'm going to show you with a little project how we can use specit in our own projects. To kick things off, you just need to run this command in your terminal specifying your project name and then choose which agentic framework to use. +In this demo, I will be using GitHub copilot. The kit will initialize all the necessary files for your project and then you can proceed to open the workspace in your code editor. The first thing you will see when you open the code editor is that specit has created this script folder and templates folder. And these are just boilerplate spec templates which are used to generate your actual spec files. +And the scripts are the ones that execute and prepare those documents. We don't have to change anything here. We can just go ahead and prepare our project by typing specify followed by our prompt. This initial prompt should be an overall description of your project. what the goal is, what the basic features are, and maybe even describe what a simple user journey looks like. +In this example, I will be creating a simple Pokedex team builder where I can search for Pokemon and add them to my team. I will also be using Gro Code Fast one as the base model for this project. So, let's go ahead and run the command. And once that's done, you will see that specit has created a new branch for this development and it has also created a spec markdown file. +In this file, we see that the model has successfully understood the assignment and created a primary user story along with acceptance scenarios. I also like that it thinks about edge cases as well and other potential roadblocks. And whenever the model comes to a situation where it can't decide on a path forward, it will add this block titled needs clarification. +So you can specify the requirements yourself. And we can also see here that it has crafted some functional requirements and key entities as well. Honestly, this is super cool because I would be too lazy to write out all these specifics for the model to follow. So, it's good that spec kit is able to guide the model to craft all of this for us. +And remember, if you ever need to change something here or decide on a totally different direction to take, this is the file where you can make those edits. But if we're happy with the spec file, next we can proceed to the plan phase. And here we should more concretely describe the tech stack of our application along with other details that we deem necessary. +Here I just pasted in some basic technical requirements for the project along with some other helpful commands like using a debounce on the Pokemon search endpoint so we don't overwhelm the API. And once you're happy with all of that, let's execute the plan command. And you can see here that specit gets more detailed. +It adds a data model and a research document as well as contracts for the object types which is super cool. And in the data model file, it even crafted a zod schema object. But I really love the research document because here we can see the ration behind the model choosing specific frameworks and it also gives us explanations about its reasoning along with other considerations for alternative solutions and it also respects the text stack choices you give it plus it tries to think of other necessities which you might not have +considered as well. So that is really powerful. So then we move on to the plan file which has laid out all the development phases in concrete steps and it has also ticked the ones that are already completed. This all looks very good to me. So now we can move on to the next phase, the task execution phase. Now we already have the spec and plan in place. +So for the tasks command, we can just start by asking the model to create an MVP version of our project. And this is where the magic happens. SpecKit will now create a very detailed tasks list which outlines step by step what we need to do to get to our development goal. Let's open up the tasks list. And we can see here that it has given every task a unique number. +And that keeps everything well and organized. So you can execute tasks in order and review them as you go. I see here that tasks one to four are dedicated to setting up the environment. So let's go ahead and ask the model to execute those. There is no slash command for this phase, but as I understand the recommended way to proceed is to write implement followed by the task numbers to tell the model which tasks to execute at the specific given command. +So first let's run the setup tasks so you can also keep track of the progress. So from here on out it's a very free flow approach of just asking the model which tasks to implement and then just following along, seeing the progress and iterating on the process. And once they're done, we can see that the model has also ticked them as completed. +I noticed that in this particular template that they have, it very much likes the test-driven development approach where it writes the tests first and then implements the features. You can probably change that in the spec or the plan if you want to go for a different development approach. So after a few commands and iterations, my model has finished implementing all of the tasks. And here's the result. +As you can see, we have a nice little functioning Pokedex where I can search for any Pokemon and add them to my team. The API seems to be working perfectly. And the project also looks very clean. It uses Chats and UI elements as I prompted it to do. And by the looks of everything, it's very well and functional. So, there you have it. +We just vibecoded a nice little web project using SpecKit. I hope by now you see how this meticulous specdriven development approach can help improve the AI model's ability to craft a cleaner, more refined code. It also gives you more precision to steer the model in the direction you want to go. +And I do have to mention that although SpecKit is designed to work with most of the coding models, the choice of the coding model still makes a difference. While testing out this tool, I also tried scaffolding a project using GPT4.1 and it didn't give me as good of a result as when I used the Grock model. So, choosing the right coding model is still necessary to achieve the best results. +It's clear that specdriven development is a paradigm we'll be seeing much more of in the future of coding. But what are your thoughts about specit? Are you using specdriven development in your coding practices? Let us know in the comments down below. And folks, if you like these types of technical breakdowns, let us know by smashing that like button underneath the video. \ No newline at end of file From f7d8376dcebf264afc40adc509669c540e601d45 Mon Sep 17 00:00:00 2001 From: LeonAI-DO Date: Wed, 24 Sep 2025 15:48:35 -0400 Subject: [PATCH 02/17] New docs and improvements for the future evolution of the AgentOps and Agentic System Insturction creation --- .github/prompts/analyze.prompt.md | 101 ++ .github/prompts/clarify.prompt.md | 158 +++ .github/prompts/constitution.prompt.md | 73 ++ .github/prompts/implement.prompt.md | 56 + .github/prompts/plan.prompt.md | 43 + .github/prompts/specify.prompt.md | 21 + .github/prompts/tasks.prompt.md | 62 + .specify/memory/constitution.md | 50 + .specify/scripts/bash/check-prerequisites.sh | 166 +++ .specify/scripts/bash/common.sh | 113 ++ .specify/scripts/bash/create-new-feature.sh | 97 ++ .specify/scripts/bash/setup-plan.sh | 60 + .specify/scripts/bash/update-agent-context.sh | 719 ++++++++++ .specify/templates/agent-file-template.md | 23 + .specify/templates/plan-template.md | 212 +++ .specify/templates/spec-template.md | 116 ++ .specify/templates/tasks-template.md | 127 ++ .../selection framework.md | 1165 +++++++++++++++++ ...orks (LangChain, LlamaIndex, Haystack).pdf | Bin ... AutoGen for Multi-Agent Orchestration.pdf | Bin ...rompt The CREATE Framework for Success.pdf | Bin 0 -> 95232 bytes ...nalysis of Next-Gen Agentic Frameworks.pdf | Bin 22 files changed, 3362 insertions(+) create mode 100644 .github/prompts/analyze.prompt.md create mode 100644 .github/prompts/clarify.prompt.md create mode 100644 .github/prompts/constitution.prompt.md create mode 100644 .github/prompts/implement.prompt.md create mode 100644 .github/prompts/plan.prompt.md create mode 100644 .github/prompts/specify.prompt.md create mode 100644 .github/prompts/tasks.prompt.md create mode 100644 .specify/memory/constitution.md create mode 100755 .specify/scripts/bash/check-prerequisites.sh create mode 100755 .specify/scripts/bash/common.sh create mode 100755 .specify/scripts/bash/create-new-feature.sh create mode 100755 .specify/scripts/bash/setup-plan.sh create mode 100755 .specify/scripts/bash/update-agent-context.sh create mode 100644 .specify/templates/agent-file-template.md create mode 100644 .specify/templates/plan-template.md create mode 100644 .specify/templates/spec-template.md create mode 100644 .specify/templates/tasks-template.md create mode 100644 0-Docs-Yensy/Framework selection data/selection framework.md rename 0-Docs-Yensy/{ => Framework selection data/src}/Comparative Analysis of Agentic Frameworks (LangChain, LlamaIndex, Haystack).pdf (100%) rename 0-Docs-Yensy/{ => Framework selection data/src}/Comparative Analysis of CrewAI vs AutoGen for Multi-Agent Orchestration.pdf (100%) create mode 100644 0-Docs-Yensy/Framework selection data/src/PROMPTING FRAMEWORKS/CREATE FRAMEWORK - How to Write an Effective AI Prompt The CREATE Framework for Success.pdf rename 0-Docs-Yensy/{ => Framework selection data/src}/Strategic Analysis of Next-Gen Agentic Frameworks.pdf (100%) diff --git a/.github/prompts/analyze.prompt.md b/.github/prompts/analyze.prompt.md new file mode 100644 index 0000000000..f4c1a7bd97 --- /dev/null +++ b/.github/prompts/analyze.prompt.md @@ -0,0 +1,101 @@ +--- +description: Perform a non-destructive cross-artifact consistency and quality analysis across spec.md, plan.md, and tasks.md after task generation. +--- + +The user input to you can be provided directly by the agent or as a command argument - you **MUST** consider it before proceeding with the prompt (if not empty). + +User input: + +$ARGUMENTS + +Goal: Identify inconsistencies, duplications, ambiguities, and underspecified items across the three core artifacts (`spec.md`, `plan.md`, `tasks.md`) before implementation. This command MUST run only after `/tasks` has successfully produced a complete `tasks.md`. + +STRICTLY READ-ONLY: Do **not** modify any files. Output a structured analysis report. Offer an optional remediation plan (user must explicitly approve before any follow-up editing commands would be invoked manually). + +Constitution Authority: The project constitution (`.specify/memory/constitution.md`) is **non-negotiable** within this analysis scope. Constitution conflicts are automatically CRITICAL and require adjustment of the spec, plan, or tasks—not dilution, reinterpretation, or silent ignoring of the principle. If a principle itself needs to change, that must occur in a separate, explicit constitution update outside `/analyze`. + +Execution steps: + +1. Run `.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks` once from repo root and parse JSON for FEATURE_DIR and AVAILABLE_DOCS. Derive absolute paths: + - SPEC = FEATURE_DIR/spec.md + - PLAN = FEATURE_DIR/plan.md + - TASKS = FEATURE_DIR/tasks.md + Abort with an error message if any required file is missing (instruct the user to run missing prerequisite command). + +2. Load artifacts: + - Parse spec.md sections: Overview/Context, Functional Requirements, Non-Functional Requirements, User Stories, Edge Cases (if present). + - Parse plan.md: Architecture/stack choices, Data Model references, Phases, Technical constraints. + - Parse tasks.md: Task IDs, descriptions, phase grouping, parallel markers [P], referenced file paths. + - Load constitution `.specify/memory/constitution.md` for principle validation. + +3. Build internal semantic models: + - Requirements inventory: Each functional + non-functional requirement with a stable key (derive slug based on imperative phrase; e.g., "User can upload file" -> `user-can-upload-file`). + - User story/action inventory. + - Task coverage mapping: Map each task to one or more requirements or stories (inference by keyword / explicit reference patterns like IDs or key phrases). + - Constitution rule set: Extract principle names and any MUST/SHOULD normative statements. + +4. Detection passes: + A. Duplication detection: + - Identify near-duplicate requirements. Mark lower-quality phrasing for consolidation. + B. Ambiguity detection: + - Flag vague adjectives (fast, scalable, secure, intuitive, robust) lacking measurable criteria. + - Flag unresolved placeholders (TODO, TKTK, ???, , etc.). + C. Underspecification: + - Requirements with verbs but missing object or measurable outcome. + - User stories missing acceptance criteria alignment. + - Tasks referencing files or components not defined in spec/plan. + D. Constitution alignment: + - Any requirement or plan element conflicting with a MUST principle. + - Missing mandated sections or quality gates from constitution. + E. Coverage gaps: + - Requirements with zero associated tasks. + - Tasks with no mapped requirement/story. + - Non-functional requirements not reflected in tasks (e.g., performance, security). + F. Inconsistency: + - Terminology drift (same concept named differently across files). + - Data entities referenced in plan but absent in spec (or vice versa). + - Task ordering contradictions (e.g., integration tasks before foundational setup tasks without dependency note). + - Conflicting requirements (e.g., one requires to use Next.js while other says to use Vue as the framework). + +5. Severity assignment heuristic: + - CRITICAL: Violates constitution MUST, missing core spec artifact, or requirement with zero coverage that blocks baseline functionality. + - HIGH: Duplicate or conflicting requirement, ambiguous security/performance attribute, untestable acceptance criterion. + - MEDIUM: Terminology drift, missing non-functional task coverage, underspecified edge case. + - LOW: Style/wording improvements, minor redundancy not affecting execution order. + +6. Produce a Markdown report (no file writes) with sections: + + ### Specification Analysis Report + | ID | Category | Severity | Location(s) | Summary | Recommendation | + |----|----------|----------|-------------|---------|----------------| + | A1 | Duplication | HIGH | spec.md:L120-134 | Two similar requirements ... | Merge phrasing; keep clearer version | + (Add one row per finding; generate stable IDs prefixed by category initial.) + + Additional subsections: + - Coverage Summary Table: + | Requirement Key | Has Task? | Task IDs | Notes | + - Constitution Alignment Issues (if any) + - Unmapped Tasks (if any) + - Metrics: + * Total Requirements + * Total Tasks + * Coverage % (requirements with >=1 task) + * Ambiguity Count + * Duplication Count + * Critical Issues Count + +7. At end of report, output a concise Next Actions block: + - If CRITICAL issues exist: Recommend resolving before `/implement`. + - If only LOW/MEDIUM: User may proceed, but provide improvement suggestions. + - Provide explicit command suggestions: e.g., "Run /specify with refinement", "Run /plan to adjust architecture", "Manually edit tasks.md to add coverage for 'performance-metrics'". + +8. Ask the user: "Would you like me to suggest concrete remediation edits for the top N issues?" (Do NOT apply them automatically.) + +Behavior rules: +- NEVER modify files. +- NEVER hallucinate missing sections—if absent, report them. +- KEEP findings deterministic: if rerun without changes, produce consistent IDs and counts. +- LIMIT total findings in the main table to 50; aggregate remainder in a summarized overflow note. +- If zero issues found, emit a success report with coverage statistics and proceed recommendation. + +Context: $ARGUMENTS diff --git a/.github/prompts/clarify.prompt.md b/.github/prompts/clarify.prompt.md new file mode 100644 index 0000000000..26ff530bd1 --- /dev/null +++ b/.github/prompts/clarify.prompt.md @@ -0,0 +1,158 @@ +--- +description: Identify underspecified areas in the current feature spec by asking up to 5 highly targeted clarification questions and encoding answers back into the spec. +--- + +The user input to you can be provided directly by the agent or as a command argument - you **MUST** consider it before proceeding with the prompt (if not empty). + +User input: + +$ARGUMENTS + +Goal: Detect and reduce ambiguity or missing decision points in the active feature specification and record the clarifications directly in the spec file. + +Note: This clarification workflow is expected to run (and be completed) BEFORE invoking `/plan`. If the user explicitly states they are skipping clarification (e.g., exploratory spike), you may proceed, but must warn that downstream rework risk increases. + +Execution steps: + +1. Run `.specify/scripts/bash/check-prerequisites.sh --json --paths-only` from repo root **once** (combined `--json --paths-only` mode / `-Json -PathsOnly`). Parse minimal JSON payload fields: + - `FEATURE_DIR` + - `FEATURE_SPEC` + - (Optionally capture `IMPL_PLAN`, `TASKS` for future chained flows.) + - If JSON parsing fails, abort and instruct user to re-run `/specify` or verify feature branch environment. + +2. Load the current spec file. Perform a structured ambiguity & coverage scan using this taxonomy. For each category, mark status: Clear / Partial / Missing. Produce an internal coverage map used for prioritization (do not output raw map unless no questions will be asked). + + Functional Scope & Behavior: + - Core user goals & success criteria + - Explicit out-of-scope declarations + - User roles / personas differentiation + + Domain & Data Model: + - Entities, attributes, relationships + - Identity & uniqueness rules + - Lifecycle/state transitions + - Data volume / scale assumptions + + Interaction & UX Flow: + - Critical user journeys / sequences + - Error/empty/loading states + - Accessibility or localization notes + + Non-Functional Quality Attributes: + - Performance (latency, throughput targets) + - Scalability (horizontal/vertical, limits) + - Reliability & availability (uptime, recovery expectations) + - Observability (logging, metrics, tracing signals) + - Security & privacy (authN/Z, data protection, threat assumptions) + - Compliance / regulatory constraints (if any) + + Integration & External Dependencies: + - External services/APIs and failure modes + - Data import/export formats + - Protocol/versioning assumptions + + Edge Cases & Failure Handling: + - Negative scenarios + - Rate limiting / throttling + - Conflict resolution (e.g., concurrent edits) + + Constraints & Tradeoffs: + - Technical constraints (language, storage, hosting) + - Explicit tradeoffs or rejected alternatives + + Terminology & Consistency: + - Canonical glossary terms + - Avoided synonyms / deprecated terms + + Completion Signals: + - Acceptance criteria testability + - Measurable Definition of Done style indicators + + Misc / Placeholders: + - TODO markers / unresolved decisions + - Ambiguous adjectives ("robust", "intuitive") lacking quantification + + For each category with Partial or Missing status, add a candidate question opportunity unless: + - Clarification would not materially change implementation or validation strategy + - Information is better deferred to planning phase (note internally) + +3. Generate (internally) a prioritized queue of candidate clarification questions (maximum 5). Do NOT output them all at once. Apply these constraints: + - Maximum of 5 total questions across the whole session. + - Each question must be answerable with EITHER: + * A short multiple‑choice selection (2–5 distinct, mutually exclusive options), OR + * A one-word / short‑phrase answer (explicitly constrain: "Answer in <=5 words"). + - Only include questions whose answers materially impact architecture, data modeling, task decomposition, test design, UX behavior, operational readiness, or compliance validation. + - Ensure category coverage balance: attempt to cover the highest impact unresolved categories first; avoid asking two low-impact questions when a single high-impact area (e.g., security posture) is unresolved. + - Exclude questions already answered, trivial stylistic preferences, or plan-level execution details (unless blocking correctness). + - Favor clarifications that reduce downstream rework risk or prevent misaligned acceptance tests. + - If more than 5 categories remain unresolved, select the top 5 by (Impact * Uncertainty) heuristic. + +4. Sequential questioning loop (interactive): + - Present EXACTLY ONE question at a time. + - For multiple‑choice questions render options as a Markdown table: + + | Option | Description | + |--------|-------------| + | A |
    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 G?tcL4DksbU literal 0 HcmV?d00001 diff --git a/0-Docs-Yensy/Strategic Analysis of Next-Gen Agentic Frameworks.pdf b/0-Docs-Yensy/Framework selection data/src/Strategic Analysis of Next-Gen Agentic Frameworks.pdf similarity index 100% rename from 0-Docs-Yensy/Strategic Analysis of Next-Gen Agentic Frameworks.pdf rename to 0-Docs-Yensy/Framework selection data/src/Strategic Analysis of Next-Gen Agentic Frameworks.pdf From 7b7ffa0ecdaa5b0df0e3a12685e179f0b0c05e6d Mon Sep 17 00:00:00 2001 From: Yensi Leonel Date: Sun, 4 Jan 2026 21:05:55 -0400 Subject: [PATCH 03/17] chore: local environment configurations and script adaptations --- .specify/scripts/bash/create-new-feature.sh | 2 +- .specify/templates/plan-template.md | 2 +- .../Framework selection data/selection framework.md | 7 +------ 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/.specify/scripts/bash/create-new-feature.sh b/.specify/scripts/bash/create-new-feature.sh index 6670550e4c..5cb17fabef 100755 --- a/.specify/scripts/bash/create-new-feature.sh +++ b/.specify/scripts/bash/create-new-feature.sh @@ -80,7 +80,7 @@ fi FEATURE_DIR="$SPECS_DIR/$BRANCH_NAME" mkdir -p "$FEATURE_DIR" -TEMPLATE="$REPO_ROOT/templates/spec-template.md" +TEMPLATE="$REPO_ROOT/.specify/templates/spec-template.md" SPEC_FILE="$FEATURE_DIR/spec.md" if [ -f "$TEMPLATE" ]; then cp "$TEMPLATE" "$SPEC_FILE"; else touch "$SPEC_FILE"; fi diff --git a/.specify/templates/plan-template.md b/.specify/templates/plan-template.md index 4785cf3467..166edb8896 100644 --- a/.specify/templates/plan-template.md +++ b/.specify/templates/plan-template.md @@ -145,7 +145,7 @@ ios/ or android/ - Quickstart test = story validation steps 5. **Update agent file incrementally** (O(1) operation): - - Run `.specify/scripts/bash/update-agent-context.sh copilot` + - Run `.specify/scripts/bash/update-agent-context.sh gemini` **IMPORTANT**: Execute it exactly as specified above. Do not add or remove any arguments. - If exists: Add only NEW tech from current plan - Preserve manual additions between markers diff --git a/0-Docs-Yensy/Framework selection data/selection framework.md b/0-Docs-Yensy/Framework selection data/selection framework.md index 41820199fc..374c723230 100644 --- a/0-Docs-Yensy/Framework selection data/selection framework.md +++ b/0-Docs-Yensy/Framework selection data/selection framework.md @@ -1157,9 +1157,4 @@ Based on this rigorous, standalone-focused re-evaluation, the recommendation is **The single framework best suited to build the entire AgentOps platform is Haystack.** -While LangChain is an exceptionally close competitor with a slightly higher unweighted score, **Haystack** wins because it scores perfectly on our most critical, heavily weighted criterion: **native and deep MCP integration**. Its production-focused, structured, and robust design provides the ideal foundation for a reliable and maintainable platform, directly aligning with our core strategic priorities. It is powerful enough to handle the full lifecycle from single-agent creation to multi-agent orchestration, making it the most balanced and strategically sound choice for a unified solution. - ---- - -User: - +While LangChain is an exceptionally close competitor with a slightly higher unweighted score, **Haystack** wins because it scores perfectly on our most critical, heavily weighted criterion: **native and deep MCP integration**. Its production-focused, structured, and robust design provides the ideal foundation for a reliable and maintainable platform, directly aligning with our core strategic priorities. It is powerful enough to handle the full lifecycle from single-agent creation to multi-agent orchestration, making it the most balanced and strategically sound choice for a unified solution. \ No newline at end of file From 33a122ea8958123030a57fd457e2b0bec28e050d Mon Sep 17 00:00:00 2001 From: Yensi Leonel Date: Sun, 4 Jan 2026 21:13:10 -0400 Subject: [PATCH 04/17] feat: Establish initial Gemini agent command definitions, Specify scripts, and templates for agent workflow, and remove markdown linter configuration. --- .markdownlint-cli2.jsonc | 27 - ...ndalone Viability\342\200\235 Edition.txt" | 113 + .../.gemini/commands/analyze.toml.md | 105 + .../.gemini/commands/clarify.toml.md | 162 ++ .../.gemini/commands/constitution.toml.md | 77 + .../.gemini/commands/implement.toml.md | 60 + .../.gemini/commands/plan.toml.md | 47 + .../.gemini/commands/specify.toml.md | 25 + .../.gemini/commands/tasks.toml.md | 66 + .../.specify/memory/constitution.md | 50 + .../scripts/bash/check-prerequisites.sh.txt | 166 ++ .../.specify/scripts/bash/common.sh.txt | 113 + .../scripts/bash/create-new-feature.sh.txt | 97 + .../.specify/scripts/bash/setup-plan.sh.txt | 60 + .../scripts/bash/update-agent-context.sh.txt | 719 +++++ .../.specify/templates/agent-file-template.md | 23 + .../.specify/templates/plan-template.md | 212 ++ .../.specify/templates/spec-template.md | 116 + .../.specify/templates/tasks-template.md | 127 + .../GEMINI INSTRUCTIONS.md | 2401 +++++++++++++++++ .../2026-01-04/project-analysis-report.md | 44 + .../2026-01-04/task-completion-report.md | 55 + 22 files changed, 4838 insertions(+), 27 deletions(-) delete mode 100644 .markdownlint-cli2.jsonc create mode 100644 "0-Docs-Yensy/Agent/Agentic Framework Critique Agent \342\200\224 \342\200\234Standalone Viability\342\200\235 Edition.txt" create mode 100644 0-Docs-Yensy/gemini instructions/.gemini/commands/analyze.toml.md create mode 100644 0-Docs-Yensy/gemini instructions/.gemini/commands/clarify.toml.md create mode 100644 0-Docs-Yensy/gemini instructions/.gemini/commands/constitution.toml.md create mode 100644 0-Docs-Yensy/gemini instructions/.gemini/commands/implement.toml.md create mode 100644 0-Docs-Yensy/gemini instructions/.gemini/commands/plan.toml.md create mode 100644 0-Docs-Yensy/gemini instructions/.gemini/commands/specify.toml.md create mode 100644 0-Docs-Yensy/gemini instructions/.gemini/commands/tasks.toml.md create mode 100644 0-Docs-Yensy/gemini instructions/.specify/memory/constitution.md create mode 100644 0-Docs-Yensy/gemini instructions/.specify/scripts/bash/check-prerequisites.sh.txt create mode 100644 0-Docs-Yensy/gemini instructions/.specify/scripts/bash/common.sh.txt create mode 100644 0-Docs-Yensy/gemini instructions/.specify/scripts/bash/create-new-feature.sh.txt create mode 100644 0-Docs-Yensy/gemini instructions/.specify/scripts/bash/setup-plan.sh.txt create mode 100644 0-Docs-Yensy/gemini instructions/.specify/scripts/bash/update-agent-context.sh.txt create mode 100644 0-Docs-Yensy/gemini instructions/.specify/templates/agent-file-template.md create mode 100644 0-Docs-Yensy/gemini instructions/.specify/templates/plan-template.md create mode 100644 0-Docs-Yensy/gemini instructions/.specify/templates/spec-template.md create mode 100644 0-Docs-Yensy/gemini instructions/.specify/templates/tasks-template.md create mode 100644 0-Docs-Yensy/gemini instructions/GEMINI INSTRUCTIONS.md create mode 100644 docs/docs-local/2026-01-04/project-analysis-report.md create mode 100644 docs/docs-local/2026-01-04/task-completion-report.md diff --git a/.markdownlint-cli2.jsonc b/.markdownlint-cli2.jsonc deleted file mode 100644 index d6db02777c..0000000000 --- a/.markdownlint-cli2.jsonc +++ /dev/null @@ -1,27 +0,0 @@ -{ - // https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md - "config": { - "default": true, - "MD003": { - "style": "atx" - }, - "MD007": { - "indent": 2 - }, - "MD013": false, - "MD024": { - "siblings_only": true - }, - "MD033": false, - "MD041": false, - "MD049": { - "style": "asterisk" - }, - "MD050": { - "style": "asterisk" - } - }, - "ignores": [ - ".genreleases/" - ] -} \ No newline at end of file diff --git "a/0-Docs-Yensy/Agent/Agentic Framework Critique Agent \342\200\224 \342\200\234Standalone Viability\342\200\235 Edition.txt" "b/0-Docs-Yensy/Agent/Agentic Framework Critique Agent \342\200\224 \342\200\234Standalone Viability\342\200\235 Edition.txt" new file mode 100644 index 0000000000..3b9dfed047 --- /dev/null +++ "b/0-Docs-Yensy/Agent/Agentic Framework Critique Agent \342\200\224 \342\200\234Standalone Viability\342\200\235 Edition.txt" @@ -0,0 +1,113 @@ +# Agentic Framework Critique Agent — “Standalone Viability” Edition + +## Role + +You are a software-engineering critique agent that evaluates **agentic frameworks** as potential **single, all-in-one platforms** for an AgentOps system. Judge each candidate on its **native, out-of-the-box** capabilities only (no credit for relying on other major frameworks). Prioritize: **MCP integration support**, **robustness** (state + observability + security/HITL), and **developer experience (DX)**. + +## Objective + +Given one or more frameworks and any provided evidence, produce: + +1. A full **scoring matrix** across the weighted criteria (all criteria applied uniformly to every framework). +2. **Standalone Viability Score** per framework with **veto flags** where applicable. +3. A **ranked Top-5** that can credibly serve as a single, unified platform (from single-agent logic to multi-agent orchestration). +4. A concise **decision card** for each Top-5 candidate with risks and implementation notes. + +## Inputs (you will be given some or all) + +* **Frameworks to evaluate** (names + optional links or excerpts). +* **Evidence**: docs, repos, tutorials, or pasted snippets. +* **Weights (optional)**: If none are provided, use the default weights defined below. +* **Constraints (optional)**: target models, hosting limits, or compliance needs. + +## Evaluation Rubric (apply to every framework) + +Score each criterion **0–10** using the standardized scale (10/8/5/3/0); justify each score with concrete evidence. Then compute weighted totals. Use the **veto rule** on critical criteria (see “Scoring Rules”). + +**Default weighted criteria (modifiable):** + +* **Tool Usage & MCP Integration** — **Weight 5 (Critical)**: native tool model and MCP alignment; ease of MCP server/client interoperability. +* **Multi-Agent Orchestration** — **Weight 5 (Critical)**: built-in support for role/process graphs and agent swarms. +* **Modularity & Extensibility (Portability/Lock-in)** — **Weight 5 (Critical)**: component swapability, vendor neutrality. +* **State Management & Memory (Qdrant)** — **Weight 4**: state persistence, long-running jobs, native Qdrant quality. +* **Observability & Debugging** — **Weight 4**: tracing/telemetry, LangSmith-style introspection, explainability. +* **Security & Human-in-the-Loop (HITL)** — **Weight 4**: sandboxing/permissions; pausing for approval. +* **Ease of Development (DX)** — **Weight 5 (Critical in this edition)**: docs, APIs, quick-start time, code clarity. +* **Code Efficiency & Cost** — **Weight 3**: token/latency efficiency, caching/budget tools. +* **Community & Momentum** — **Weight 3**: activity, governance, roadmap alignment. + +> **Scoring anchors (use verbatim logic):** +> **10** = exemplary/native, **8** = strong/first-party integrated, **5** = adequate/feasible with moderate code, **3** = weak/complex, **0** = non-existent/incompatible. + +## Scoring Rules + +* **Weighted score** per criterion: `score × weight`. Sum to get the **Total Weighted Score**. +* **VETO rule (critical gates):** any **weight-5** criterion scoring **<5** triggers **VETO 🚩**; the framework is provisionally disqualified unless a specific, credible mitigation is provided. +* **Robustness floor:** compute `Robustness = min(State, Observability, Security/HITL)`. When `Robustness <5`, flag **Robustness Risk** and cap the **Standalone Viability Score** at the lesser of (Total Weighted Score) and (Total Weighted Score × 0.85). +* **Standalone Viability Score (SVS):** normalize the veto-adjusted total to **0–100** for cross-comparison. +* **Tie-breakers (in order):** higher MCP score → higher Robustness → higher DX → higher Community. + +## Procedure + +1. **Parse inputs** and list candidates. +2. **Evidence pass:** extract claims from provided docs/snippets; cite specific lines/sections when available. +3. **Criterion scoring:** for each framework, score all criteria with 1–2 line justifications tied to evidence. +4. **Compute totals:** apply weights, generate VETO flags, compute Robustness and SVS. +5. **Rank & select Top-5 standalone candidates**. The lens is “can this be our **only** framework end-to-end?” (You’re intentionally optimizing for a **Unified Framework** outcome over a hybrid stack here.) +6. **Synthesize**: write decision cards and a short comparative narrative explaining trade-offs and risks. + +## Required Outputs + +**A. Scoring Matrix (per framework):** + +* Table columns: Criterion | Weight | Score (0–10) | Weighted | Justification (1–2 lines with evidence reference). + +**B. Standalone Summary Table (all frameworks):** + +* Columns: Framework | Total Weighted | VETO? | Robustness (min of three) | SVS (0–100) | Notes. + +**C. Top-5 Decision Cards (one per pick):** + +* **Why it qualifies as a standalone** (single-agent → multi-agent). +* **Key strengths** (bullets), **known gaps**, **VETO/risks** with mitigations. +* **Implementation notes**: how to pilot as the sole platform; immediate next steps. + +**D. Narrative Synthesis (≤ 300 words):** + +* Explain the rank order, especially where a non-top score wins on MCP/Robustness/DX priorities. +* State any assumptions and uncertainties. + +## Constraints & Standards + +* **Uniform criteria application:** do *not* divide by categories; apply the full rubric to every framework equally. +* **Out-of-the-box only:** no credit for capabilities that rely on other frameworks. +* **Evidence-first:** when you assert a capability, point to the doc/repo lines provided. +* **Clarity over flourish:** terse justifications, no filler. +* **Safety:** flag any security/HITL gaps that would block production use. + +## Output Format + +Produce two artifacts in this order: + +1. **“Standalone-Matrix.md”** — Scoring Matrix + Standalone Summary Table. +2. **“Top-5-Decision-Cards.md”** — five cards + narrative synthesis. + +Use clean Markdown tables; avoid nested tables; keep each justification ≤140 characters. + +## Example Skeleton (fill with real data) + +**Standalone Summary (example layout):** + +| Framework | Total Weighted | VETO | Robustness | SVS | Notes | +| --------- | -------------: | :--: | :--------: | --: | --------------------------------- | +| LangChain | 312 | — | 7 | 91 | Strong MCP adapters; great DX | +| Haystack | 318 | — | 8 | 93 | Production-oriented; good tracing | +| … | … | … | … | … | … | + +**Decision Card (example layout):** + +* **Why standalone:** +* **Strengths:** +* **Gaps / Risks:** +* **Mitigations:** +* **Pilot plan (2 steps):** diff --git a/0-Docs-Yensy/gemini instructions/.gemini/commands/analyze.toml.md b/0-Docs-Yensy/gemini instructions/.gemini/commands/analyze.toml.md new file mode 100644 index 0000000000..8ab2837a3d --- /dev/null +++ b/0-Docs-Yensy/gemini instructions/.gemini/commands/analyze.toml.md @@ -0,0 +1,105 @@ +description = "Perform a non-destructive cross-artifact consistency and quality analysis across spec.md, plan.md, and tasks.md after task generation." + +prompt = """ +--- +description: Perform a non-destructive cross-artifact consistency and quality analysis across spec.md, plan.md, and tasks.md after task generation. +--- + +The user input to you can be provided directly by the agent or as a command argument - you **MUST** consider it before proceeding with the prompt (if not empty). + +User input: + +$ARGUMENTS + +Goal: Identify inconsistencies, duplications, ambiguities, and underspecified items across the three core artifacts (`spec.md`, `plan.md`, `tasks.md`) before implementation. This command MUST run only after `/tasks` has successfully produced a complete `tasks.md`. + +STRICTLY READ-ONLY: Do **not** modify any files. Output a structured analysis report. Offer an optional remediation plan (user must explicitly approve before any follow-up editing commands would be invoked manually). + +Constitution Authority: The project constitution (`.specify/memory/constitution.md`) is **non-negotiable** within this analysis scope. Constitution conflicts are automatically CRITICAL and require adjustment of the spec, plan, or tasks—not dilution, reinterpretation, or silent ignoring of the principle. If a principle itself needs to change, that must occur in a separate, explicit constitution update outside `/analyze`. + +Execution steps: + +1. Run `.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks` once from repo root and parse JSON for FEATURE_DIR and AVAILABLE_DOCS. Derive absolute paths: + - SPEC = FEATURE_DIR/spec.md + - PLAN = FEATURE_DIR/plan.md + - TASKS = FEATURE_DIR/tasks.md + Abort with an error message if any required file is missing (instruct the user to run missing prerequisite command). + +2. Load artifacts: + - Parse spec.md sections: Overview/Context, Functional Requirements, Non-Functional Requirements, User Stories, Edge Cases (if present). + - Parse plan.md: Architecture/stack choices, Data Model references, Phases, Technical constraints. + - Parse tasks.md: Task IDs, descriptions, phase grouping, parallel markers [P], referenced file paths. + - Load constitution `.specify/memory/constitution.md` for principle validation. + +3. Build internal semantic models: + - Requirements inventory: Each functional + non-functional requirement with a stable key (derive slug based on imperative phrase; e.g., "User can upload file" -> `user-can-upload-file`). + - User story/action inventory. + - Task coverage mapping: Map each task to one or more requirements or stories (inference by keyword / explicit reference patterns like IDs or key phrases). + - Constitution rule set: Extract principle names and any MUST/SHOULD normative statements. + +4. Detection passes: + A. Duplication detection: + - Identify near-duplicate requirements. Mark lower-quality phrasing for consolidation. + B. Ambiguity detection: + - Flag vague adjectives (fast, scalable, secure, intuitive, robust) lacking measurable criteria. + - Flag unresolved placeholders (TODO, TKTK, ???, , etc.). + C. Underspecification: + - Requirements with verbs but missing object or measurable outcome. + - User stories missing acceptance criteria alignment. + - Tasks referencing files or components not defined in spec/plan. + D. Constitution alignment: + - Any requirement or plan element conflicting with a MUST principle. + - Missing mandated sections or quality gates from constitution. + E. Coverage gaps: + - Requirements with zero associated tasks. + - Tasks with no mapped requirement/story. + - Non-functional requirements not reflected in tasks (e.g., performance, security). + F. Inconsistency: + - Terminology drift (same concept named differently across files). + - Data entities referenced in plan but absent in spec (or vice versa). + - Task ordering contradictions (e.g., integration tasks before foundational setup tasks without dependency note). + - Conflicting requirements (e.g., one requires to use Next.js while other says to use Vue as the framework). + +5. Severity assignment heuristic: + - CRITICAL: Violates constitution MUST, missing core spec artifact, or requirement with zero coverage that blocks baseline functionality. + - HIGH: Duplicate or conflicting requirement, ambiguous security/performance attribute, untestable acceptance criterion. + - MEDIUM: Terminology drift, missing non-functional task coverage, underspecified edge case. + - LOW: Style/wording improvements, minor redundancy not affecting execution order. + +6. Produce a Markdown report (no file writes) with sections: + + ### Specification Analysis Report + | ID | Category | Severity | Location(s) | Summary | Recommendation | + |----|----------|----------|-------------|---------|----------------| + | A1 | Duplication | HIGH | spec.md:L120-134 | Two similar requirements ... | Merge phrasing; keep clearer version | + (Add one row per finding; generate stable IDs prefixed by category initial.) + + Additional subsections: + - Coverage Summary Table: + | Requirement Key | Has Task? | Task IDs | Notes | + - Constitution Alignment Issues (if any) + - Unmapped Tasks (if any) + - Metrics: + * Total Requirements + * Total Tasks + * Coverage % (requirements with >=1 task) + * Ambiguity Count + * Duplication Count + * Critical Issues Count + +7. At end of report, output a concise Next Actions block: + - If CRITICAL issues exist: Recommend resolving before `/implement`. + - If only LOW/MEDIUM: User may proceed, but provide improvement suggestions. + - Provide explicit command suggestions: e.g., "Run /specify with refinement", "Run /plan to adjust architecture", "Manually edit tasks.md to add coverage for 'performance-metrics'". + +8. Ask the user: "Would you like me to suggest concrete remediation edits for the top N issues?" (Do NOT apply them automatically.) + +Behavior rules: +- NEVER modify files. +- NEVER hallucinate missing sections—if absent, report them. +- KEEP findings deterministic: if rerun without changes, produce consistent IDs and counts. +- LIMIT total findings in the main table to 50; aggregate remainder in a summarized overflow note. +- If zero issues found, emit a success report with coverage statistics and proceed recommendation. + +Context: {{args}} +""" diff --git a/0-Docs-Yensy/gemini instructions/.gemini/commands/clarify.toml.md b/0-Docs-Yensy/gemini instructions/.gemini/commands/clarify.toml.md new file mode 100644 index 0000000000..3fd7790b2a --- /dev/null +++ b/0-Docs-Yensy/gemini instructions/.gemini/commands/clarify.toml.md @@ -0,0 +1,162 @@ +description = "Identify underspecified areas in the current feature spec by asking up to 5 highly targeted clarification questions and encoding answers back into the spec." + +prompt = """ +--- +description: Identify underspecified areas in the current feature spec by asking up to 5 highly targeted clarification questions and encoding answers back into the spec. +--- + +The user input to you can be provided directly by the agent or as a command argument - you **MUST** consider it before proceeding with the prompt (if not empty). + +User input: + +$ARGUMENTS + +Goal: Detect and reduce ambiguity or missing decision points in the active feature specification and record the clarifications directly in the spec file. + +Note: This clarification workflow is expected to run (and be completed) BEFORE invoking `/plan`. If the user explicitly states they are skipping clarification (e.g., exploratory spike), you may proceed, but must warn that downstream rework risk increases. + +Execution steps: + +1. Run `.specify/scripts/bash/check-prerequisites.sh --json --paths-only` from repo root **once** (combined `--json --paths-only` mode / `-Json -PathsOnly`). Parse minimal JSON payload fields: + - `FEATURE_DIR` + - `FEATURE_SPEC` + - (Optionally capture `IMPL_PLAN`, `TASKS` for future chained flows.) + - If JSON parsing fails, abort and instruct user to re-run `/specify` or verify feature branch environment. + +2. Load the current spec file. Perform a structured ambiguity & coverage scan using this taxonomy. For each category, mark status: Clear / Partial / Missing. Produce an internal coverage map used for prioritization (do not output raw map unless no questions will be asked). + + Functional Scope & Behavior: + - Core user goals & success criteria + - Explicit out-of-scope declarations + - User roles / personas differentiation + + Domain & Data Model: + - Entities, attributes, relationships + - Identity & uniqueness rules + - Lifecycle/state transitions + - Data volume / scale assumptions + + Interaction & UX Flow: + - Critical user journeys / sequences + - Error/empty/loading states + - Accessibility or localization notes + + Non-Functional Quality Attributes: + - Performance (latency, throughput targets) + - Scalability (horizontal/vertical, limits) + - Reliability & availability (uptime, recovery expectations) + - Observability (logging, metrics, tracing signals) + - Security & privacy (authN/Z, data protection, threat assumptions) + - Compliance / regulatory constraints (if any) + + Integration & External Dependencies: + - External services/APIs and failure modes + - Data import/export formats + - Protocol/versioning assumptions + + Edge Cases & Failure Handling: + - Negative scenarios + - Rate limiting / throttling + - Conflict resolution (e.g., concurrent edits) + + Constraints & Tradeoffs: + - Technical constraints (language, storage, hosting) + - Explicit tradeoffs or rejected alternatives + + Terminology & Consistency: + - Canonical glossary terms + - Avoided synonyms / deprecated terms + + Completion Signals: + - Acceptance criteria testability + - Measurable Definition of Done style indicators + + Misc / Placeholders: + - TODO markers / unresolved decisions + - Ambiguous adjectives ("robust", "intuitive") lacking quantification + + For each category with Partial or Missing status, add a candidate question opportunity unless: + - Clarification would not materially change implementation or validation strategy + - Information is better deferred to planning phase (note internally) + +3. Generate (internally) a prioritized queue of candidate clarification questions (maximum 5). Do NOT output them all at once. Apply these constraints: + - Maximum of 5 total questions across the whole session. + - Each question must be answerable with EITHER: + * A short multiple‑choice selection (2–5 distinct, mutually exclusive options), OR + * A one-word / short‑phrase answer (explicitly constrain: "Answer in <=5 words"). + - Only include questions whose answers materially impact architecture, data modeling, task decomposition, test design, UX behavior, operational readiness, or compliance validation. + - Ensure category coverage balance: attempt to cover the highest impact unresolved categories first; avoid asking two low-impact questions when a single high-impact area (e.g., security posture) is unresolved. + - Exclude questions already answered, trivial stylistic preferences, or plan-level execution details (unless blocking correctness). + - Favor clarifications that reduce downstream rework risk or prevent misaligned acceptance tests. + - If more than 5 categories remain unresolved, select the top 5 by (Impact * Uncertainty) heuristic. + +4. Sequential questioning loop (interactive): + - Present EXACTLY ONE question at a time. + - For multiple‑choice questions render options as a Markdown table: + + | Option | Description | + |--------|-------------| + | A |

    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 U{(2q +This section contains a summary of this file. + + +This file contains a packed representation of the entire repository's contents. +It is designed to be easily consumable by AI systems for analysis, code review, +or other automated processes. + + + +The content is organized as follows: +1. This summary section +2. Repository information +3. Directory structure +4. Repository files (if enabled) +5. Multiple file entries, each consisting of: + - File path as an attribute + - Full contents of the file + + + +- This file should be treated as read-only. Any changes should be made to the + original repository files, not this packed version. +- When processing this file, use the file path to distinguish + between different files in the repository. +- Be aware that this file may contain sensitive information. Handle it with + the same level of security as you would the original repository. + + + +- Some files may have been excluded based on .gitignore rules and Repomix's configuration +- Binary files are not included in this packed representation. Please refer to the Repository Structure section for a complete list of file paths, including binary files +- Files matching patterns in .gitignore are excluded +- Files matching default ignore patterns are excluded +- Security check has been disabled - content may contain sensitive information +- Files are sorted by Git change count (files with more changes are at the bottom) + + + + + +.github/ + workflows/ + docs.yml + manual-release.yml + release.yml + CODEOWNERS +docs/ + .gitignore + docfx.json + index.md + installation.md + quickstart.md + README.md + toc.yml +memory/ + constitution_update_checklist.md + constitution.md +scripts/ + check-task-prerequisites.sh + common.sh + create-new-feature.sh + get-feature-paths.sh + setup-plan.sh + update-agent-context.sh +src/ + specify_cli/ + __init__.py +templates/ + commands/ + plan.md + specify.md + tasks.md + agent-file-template.md + plan-template.md + spec-template.md + tasks-template.md +.gitignore +CODE_OF_CONDUCT.md +CONTRIBUTING.md +LICENSE +pyproject.toml +README.md +SECURITY.md +spec-driven.md +SUPPORT.md + + + +This section contains the contents of the repository's files. + + +# Build and deploy DocFX documentation to GitHub Pages +name: Deploy Documentation to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + paths: + - 'docs/**' + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 # Fetch all history for git info + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.x' + + - name: Setup DocFX + run: dotnet tool install -g docfx + + - name: Build with DocFX + run: | + cd docs + docfx docfx.json + + - name: Setup Pages + uses: actions/configure-pages@v5 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: 'docs/_site' + + # Deploy job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + + + +name: Manual Release + +on: + workflow_dispatch: + inputs: + version_bump: + description: 'Version bump type' + required: true + default: 'patch' + type: choice + options: + - patch + - minor + - major + +jobs: + manual_release: + runs-on: ubuntu-latest + + permissions: + contents: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Calculate new version + id: version + run: | + # Get the latest tag, or use v0.0.0 if no tags exist + LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0") + echo "latest_tag=$LATEST_TAG" >> $GITHUB_OUTPUT + + # Extract version number + VERSION=$(echo $LATEST_TAG | sed 's/v//') + IFS='.' read -ra VERSION_PARTS <<< "$VERSION" + MAJOR=${VERSION_PARTS[0]:-0} + MINOR=${VERSION_PARTS[1]:-0} + PATCH=${VERSION_PARTS[2]:-0} + + # Increment based on input + case "${{ github.event.inputs.version_bump }}" in + "major") + MAJOR=$((MAJOR + 1)) + MINOR=0 + PATCH=0 + ;; + "minor") + MINOR=$((MINOR + 1)) + PATCH=0 + ;; + "patch") + PATCH=$((PATCH + 1)) + ;; + esac + + NEW_VERSION="v$MAJOR.$MINOR.$PATCH" + echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT + echo "New version will be: $NEW_VERSION (was $LATEST_TAG)" + + - name: Create release package + run: | + # Create base package directory structure + mkdir -p sdd-package-base + + # Copy common folders to base + echo "Packaging SDD common components..." + + if [ -d "memory" ]; then + cp -r memory sdd-package-base/ + echo "✓ Copied memory folder ($(find memory -type f | wc -l) files)" + else + echo "⚠️ memory folder not found" + fi + + if [ -d "scripts" ]; then + cp -r scripts sdd-package-base/ + echo "✓ Copied scripts folder ($(find scripts -type f | wc -l) files)" + else + echo "⚠️ scripts folder not found" + fi + + # Create Claude Code package + echo "Creating Claude Code package..." + mkdir -p sdd-claude-package + cp -r sdd-package-base/* sdd-claude-package/ + if [ -d "agent_templates/claude" ]; then + cp -r agent_templates/claude sdd-claude-package/.claude + echo "✓ Added Claude Code commands ($(find agent_templates/claude -type f | wc -l) files)" + else + echo "⚠️ agent_templates/claude folder not found" + fi + + # Create Gemini CLI package + echo "Creating Gemini CLI package..." + mkdir -p sdd-gemini-package + cp -r sdd-package-base/* sdd-gemini-package/ + if [ -d "agent_templates/gemini" ]; then + cp -r agent_templates/gemini sdd-gemini-package/.gemini + # Move GEMINI.md to root for easier access + if [ -f "sdd-gemini-package/.gemini/GEMINI.md" ]; then + mv sdd-gemini-package/.gemini/GEMINI.md sdd-gemini-package/GEMINI.md + echo "✓ Moved GEMINI.md to root of Gemini package" + fi + # Remove empty .gemini folder if it only contained GEMINI.md + if [ -d "sdd-gemini-package/.gemini" ] && [ -z "$(find sdd-gemini-package/.gemini -type f)" ]; then + rm -rf sdd-gemini-package/.gemini + echo "✓ Removed empty .gemini folder" + fi + echo "✓ Added Gemini CLI commands ($(find agent_templates/gemini -type f | wc -l) files)" + else + echo "⚠️ agent_templates/gemini folder not found" + fi + + # Create GitHub Copilot package + echo "Creating GitHub Copilot package..." + mkdir -p sdd-copilot-package + cp -r sdd-package-base/* sdd-copilot-package/ + if [ -d "agent_templates/copilot" ]; then + mkdir -p sdd-copilot-package/.github + cp -r agent_templates/copilot/* sdd-copilot-package/.github/ + echo "✓ Added Copilot instructions to .github ($(find agent_templates/copilot -type f | wc -l) files)" + else + echo "⚠️ agent_templates/copilot folder not found" + fi + + # Create archive files for each package + echo "Creating archive files..." + cd sdd-claude-package && zip -r ../spec-kit-template-claude-${{ steps.version.outputs.new_version }}.zip . && cd .. + + cd sdd-gemini-package && zip -r ../spec-kit-template-gemini-${{ steps.version.outputs.new_version }}.zip . && cd .. + + cd sdd-copilot-package && zip -r ../spec-kit-template-copilot-${{ steps.version.outputs.new_version }}.zip . && cd .. + + echo "" + echo "📦 Packages created:" + echo "Claude: $(ls -lh spec-kit-template-claude-*.zip | awk '{print $5}')" + echo "Gemini: $(ls -lh spec-kit-template-gemini-*.zip | awk '{print $5}')" + echo "Copilot: $(ls -lh spec-kit-template-copilot-*.zip | awk '{print $5}')" + echo "Copilot: $(ls -lh sdd-template-copilot-*.zip | awk '{print $5}')" + + - name: Generate detailed release notes + run: | + LAST_TAG=${{ steps.version.outputs.latest_tag }} + + # Get commit range + if [ "$LAST_TAG" = "v0.0.0" ]; then + COMMIT_RANGE="HEAD~10..HEAD" + COMMITS=$(git log --oneline --pretty=format:"- %s" $COMMIT_RANGE 2>/dev/null || echo "- Initial release") + else + COMMIT_RANGE="$LAST_TAG..HEAD" + COMMITS=$(git log --oneline --pretty=format:"- %s" $COMMIT_RANGE 2>/dev/null || echo "- No changes since last release") + fi + + # Count files in each directory + CLAUDE_COUNT=$(find agent_templates/claude -type f 2>/dev/null | wc -l || echo "0") + GEMINI_COUNT=$(find agent_templates/gemini -type f 2>/dev/null | wc -l || echo "0") + COPILOT_COUNT=$(find agent_templates/copilot -type f 2>/dev/null | wc -l || echo "0") + MEMORY_COUNT=$(find memory -type f 2>/dev/null | wc -l || echo "0") + SCRIPTS_COUNT=$(find scripts -type f 2>/dev/null | wc -l || echo "0") + + cat > release_notes.md << EOF + Template release ${{ steps.version.outputs.new_version }} + + Updated specification-driven development templates for GitHub Copilot, Claude Code, and Gemini CLI. + + Download the template for your preferred AI assistant: + - spec-kit-template-copilot-${{ steps.version.outputs.new_version }}.zip + - spec-kit-template-claude-${{ steps.version.outputs.new_version }}.zip + - spec-kit-template-gemini-${{ steps.version.outputs.new_version }}.zip + + Changes since $LAST_TAG: + $COMMITS + EOF + + - name: Create GitHub Release + run: | + # Remove 'v' prefix from version for release title + VERSION_NO_V=${{ steps.version.outputs.new_version }} + VERSION_NO_V=${VERSION_NO_V#v} + + gh release create ${{ steps.version.outputs.new_version }} \ + spec-kit-template-copilot-${{ steps.version.outputs.new_version }}.zip \ + spec-kit-template-claude-${{ steps.version.outputs.new_version }}.zip \ + spec-kit-template-gemini-${{ steps.version.outputs.new_version }}.zip \ + --title "Spec Kit Templates - $VERSION_NO_V" \ + --notes-file release_notes.md + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + + +name: Create Release + +on: + push: + branches: [ main ] + paths: + - 'memory/**' + - 'scripts/**' + - 'templates/**' + workflow_dispatch: + +jobs: + release: + runs-on: ubuntu-latest + + permissions: + contents: write + pull-requests: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Get latest tag + id: get_tag + run: | + # Get the latest tag, or use v0.0.0 if no tags exist + LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0") + echo "latest_tag=$LATEST_TAG" >> $GITHUB_OUTPUT + + # Extract version number and increment + VERSION=$(echo $LATEST_TAG | sed 's/v//') + IFS='.' read -ra VERSION_PARTS <<< "$VERSION" + MAJOR=${VERSION_PARTS[0]:-0} + MINOR=${VERSION_PARTS[1]:-0} + PATCH=${VERSION_PARTS[2]:-0} + + # Increment patch version + PATCH=$((PATCH + 1)) + NEW_VERSION="v$MAJOR.$MINOR.$PATCH" + + echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT + echo "New version will be: $NEW_VERSION" + + - name: Check if release already exists + id: check_release + run: | + if gh release view ${{ steps.get_tag.outputs.new_version }} >/dev/null 2>&1; then + echo "exists=true" >> $GITHUB_OUTPUT + echo "Release ${{ steps.get_tag.outputs.new_version }} already exists, skipping..." + else + echo "exists=false" >> $GITHUB_OUTPUT + echo "Release ${{ steps.get_tag.outputs.new_version }} does not exist, proceeding..." + fi + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Create release package + if: steps.check_release.outputs.exists == 'false' + run: | + # Create base package directory structure + mkdir -p sdd-package-base + + # Copy common folders to base + if [ -d "memory" ]; then + cp -r memory sdd-package-base/ + echo "Copied memory folder" + fi + + if [ -d "scripts" ]; then + cp -r scripts sdd-package-base/ + echo "Copied scripts folder" + fi + + if [ -d "templates" ]; then + mkdir -p sdd-package-base/templates + # Copy templates folder but exclude the commands directory + find templates -type f -not -path "templates/commands/*" -exec cp --parents {} sdd-package-base/ \; + echo "Copied templates folder (excluding commands directory)" + fi + + # Generate command files for each agent from source templates + generate_commands() { + local agent=$1 + local ext=$2 + local arg_format=$3 + local output_dir=$4 + + mkdir -p "$output_dir" + + for template in templates/commands/*.md; do + if [[ -f "$template" ]]; then + name=$(basename "$template" .md) + description=$(awk '/^description:/ {gsub(/^description: *"?/, ""); gsub(/"$/, ""); print; exit}' "$template" | tr -d '\r') + content=$(awk '/^---$/{if(++count==2) start=1; next} start' "$template" | sed "s/{ARGS}/$arg_format/g") + + case $ext in + "toml") + { + echo "description = \"$description\"" + echo "" + echo "prompt = \"\"\"" + echo "$content" + echo "\"\"\"" + } > "$output_dir/$name.$ext" + ;; + "md") + echo "$content" > "$output_dir/$name.$ext" + ;; + "prompt.md") + { + echo "# $(echo "$description" | sed 's/\. .*//')" + echo "" + echo "$content" + } > "$output_dir/$name.$ext" + ;; + esac + fi + done + } + + # Create Claude Code package + mkdir -p sdd-claude-package + cp -r sdd-package-base/* sdd-claude-package/ + mkdir -p sdd-claude-package/.claude/commands + generate_commands "claude" "md" "\$ARGUMENTS" "sdd-claude-package/.claude/commands" + echo "Created Claude Code package" + + # Create Gemini CLI package + mkdir -p sdd-gemini-package + cp -r sdd-package-base/* sdd-gemini-package/ + mkdir -p sdd-gemini-package/.gemini/commands + generate_commands "gemini" "toml" "{{args}}" "sdd-gemini-package/.gemini/commands" + if [ -f "agent_templates/gemini/GEMINI.md" ]; then + cp agent_templates/gemini/GEMINI.md sdd-gemini-package/GEMINI.md + fi + echo "Created Gemini CLI package" + + # Create GitHub Copilot package + mkdir -p sdd-copilot-package + cp -r sdd-package-base/* sdd-copilot-package/ + mkdir -p sdd-copilot-package/.github/prompts + generate_commands "copilot" "prompt.md" "\$ARGUMENTS" "sdd-copilot-package/.github/prompts" + echo "Created GitHub Copilot package" + + # Create archive files for each package + cd sdd-claude-package && zip -r ../spec-kit-template-claude-${{ steps.get_tag.outputs.new_version }}.zip . && cd .. + + cd sdd-gemini-package && zip -r ../spec-kit-template-gemini-${{ steps.get_tag.outputs.new_version }}.zip . && cd .. + + cd sdd-copilot-package && zip -r ../spec-kit-template-copilot-${{ steps.get_tag.outputs.new_version }}.zip . && cd .. + + # List contents for verification + echo "Claude package contents:" + unzip -l spec-kit-template-claude-${{ steps.get_tag.outputs.new_version }}.zip | head -10 + echo "Gemini package contents:" + unzip -l spec-kit-template-gemini-${{ steps.get_tag.outputs.new_version }}.zip | head -10 + echo "Copilot package contents:" + unzip -l spec-kit-template-copilot-${{ steps.get_tag.outputs.new_version }}.zip | head -10 + + - name: Generate release notes + if: steps.check_release.outputs.exists == 'false' + id: release_notes + run: | + # Get commits since last tag + LAST_TAG=${{ steps.get_tag.outputs.latest_tag }} + if [ "$LAST_TAG" = "v0.0.0" ]; then + # Check how many commits we have and use that as the limit + COMMIT_COUNT=$(git rev-list --count HEAD) + if [ "$COMMIT_COUNT" -gt 10 ]; then + COMMITS=$(git log --oneline --pretty=format:"- %s" HEAD~10..HEAD) + else + COMMITS=$(git log --oneline --pretty=format:"- %s" HEAD~$COMMIT_COUNT..HEAD 2>/dev/null || git log --oneline --pretty=format:"- %s") + fi + else + COMMITS=$(git log --oneline --pretty=format:"- %s" $LAST_TAG..HEAD) + fi + + # Create release notes + cat > release_notes.md << EOF + Template release ${{ steps.get_tag.outputs.new_version }} + + Updated specification-driven development templates for GitHub Copilot, Claude Code, and Gemini CLI. + + Download the template for your preferred AI assistant: + - spec-kit-template-copilot-${{ steps.get_tag.outputs.new_version }}.zip + - spec-kit-template-claude-${{ steps.get_tag.outputs.new_version }}.zip + - spec-kit-template-gemini-${{ steps.get_tag.outputs.new_version }}.zip + EOF + + echo "Generated release notes:" + cat release_notes.md + + - name: Create GitHub Release + if: steps.check_release.outputs.exists == 'false' + run: | + # Remove 'v' prefix from version for release title + VERSION_NO_V=${{ steps.get_tag.outputs.new_version }} + VERSION_NO_V=${VERSION_NO_V#v} + + gh release create ${{ steps.get_tag.outputs.new_version }} \ + spec-kit-template-copilot-${{ steps.get_tag.outputs.new_version }}.zip \ + spec-kit-template-claude-${{ steps.get_tag.outputs.new_version }}.zip \ + spec-kit-template-gemini-${{ steps.get_tag.outputs.new_version }}.zip \ + --title "Spec Kit Templates - $VERSION_NO_V" \ + --notes-file release_notes.md + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Update version in pyproject.toml (for release artifacts only) + if: steps.check_release.outputs.exists == 'false' + run: | + # Update version in pyproject.toml (remove 'v' prefix for Python versioning) + VERSION=${{ steps.get_tag.outputs.new_version }} + PYTHON_VERSION=${VERSION#v} + + if [ -f "pyproject.toml" ]; then + sed -i "s/version = \".*\"/version = \"$PYTHON_VERSION\"/" pyproject.toml + echo "Updated pyproject.toml version to $PYTHON_VERSION (for release artifacts only)" + fi + + # Note: No longer committing version changes back to main branch + # The version is only updated in the release artifacts + + + +# Global code owner +* @localden + + + +# DocFX build output +_site/ +obj/ +.docfx/ + +# Temporary files +*.tmp +*.log + + + +{ + "build": { + "content": [ + { + "files": [ + "*.md", + "toc.yml" + ] + }, + { + "files": [ + "../README.md", + "../CONTRIBUTING.md", + "../CODE_OF_CONDUCT.md", + "../SECURITY.md", + "../SUPPORT.md" + ], + "dest": "." + } + ], + "resource": [ + { + "files": [ + "images/**" + ] + }, + { + "files": [ + "../media/**" + ], + "dest": "media" + } + ], + "overwrite": [ + { + "files": [ + "apidoc/**.md" + ], + "exclude": [ + "obj/**", + "_site/**" + ] + } + ], + "dest": "_site", + "globalMetadataFiles": [], + "fileMetadataFiles": [], + "template": [ + "default", + "modern" + ], + "postProcessors": [], + "markdownEngineName": "markdig", + "noLangKeyword": false, + "keepFileLink": false, + "cleanupCacheHistory": false, + "disableGitFeatures": false, + "globalMetadata": { + "_appTitle": "Spec Kit Documentation", + "_appName": "Spec Kit", + "_appFooter": "Spec Kit - A specification-driven development toolkit", + "_enableSearch": true, + "_disableContribution": false, + "_gitContribute": { + "repo": "https://github.com/github/spec-kit", + "branch": "main" + } + } + } +} + + + +# Spec Kit + +*Build high-quality software faster.* + +**An effort to allow organizations to focus on product scenarios rather than writing undifferentiated code with the help of Spec-Driven Development.** + +## What is Spec-Driven Development? + +Spec-Driven Development **flips the script** on traditional software development. For decades, code has been king — specifications were just scaffolding we built and discarded once the "real work" of coding began. Spec-Driven Development changes this: **specifications become executable**, directly generating working implementations rather than just guiding them. + +## Getting Started + +- [Installation Guide](installation.md) +- [Quick Start Guide](quickstart.md) + +## Core Philosophy + +Spec-Driven Development is a structured process that emphasizes: + +- **Intent-driven development** where specifications define the "_what_" before the "_how_" +- **Rich specification creation** using guardrails and organizational principles +- **Multi-step refinement** rather than one-shot code generation from prompts +- **Heavy reliance** on advanced AI model capabilities for specification interpretation + +## Development Phases + +| Phase | Focus | Key Activities | +|-------|-------|----------------| +| **0-to-1 Development** ("Greenfield") | Generate from scratch |