{
  "markdown": "# SDLAIC\n\n**SDLC + AI** — a play on *Software Development Life Cycle*, with AI in the name and in the workflow. A CLI tool and AI skill framework that enforces a phase-gated development process for AI coding agents. AI coding agents tend to jump straight to writing code, skip design, skip testing, and drift from requirements. SDLAIC forces every change through a fixed pipeline where each phase produces a verifiable artifact before the next phase can begin.\n\nSDLAIC consists of two parts:\n1. **`sdlaic` CLI** (Go) — manages change artifacts: initialization, templating, validation, status tracking, and AI plugin installation.\n2. **AI Skill definitions** (Markdown) — loaded by AI agents (Claude Code, Codex, Gemini CLI) to enforce workflow discipline.\n\n---\n\n## Installation\n\n### macOS / Linux\nInstall `sdlaic` using the single-line installation script:\n```bash\ncurl -fsSL https://raw.githubusercontent.com/bienwithcode/SDLAIC/main/install.sh | sh\n```\n\n### Windows\nInstall `sdlaic` natively using the PowerShell installer:\n```powershell\nirm https://raw.githubusercontent.com/bienwithcode/SDLAIC/main/install.ps1 | iex\n```\n\n### Go Developers (Cross-platform)\nIf you have the Go compiler installed:\n```bash\ngo install github.com/bienwithcode/SDLAIC@latest\n```\n\n---\n\n## AI Agent Integration\n\n### Claude Code (Recommended)\nYou can automatically configure and launch Claude Code with the SDLAIC plugin using a single command:\n```bash\nsdlaic open claude\n```\n*(This command automatically initializes the workspace if needed, registers the `bienwithcode` marketplace, installs the `sdlaic` plugin, and starts a Claude Code shell session).*\n\n#### Manual / Direct Claude Installation\nIf you do not wish to use the Go CLI, you can register and install the plugin directly within a Claude Code session:\n```bash\n/plugin marketplace add bienwithcode/SDLAIC\n/plugin install sdlaic@bienwithcode\n```\n\n### Pi\nYou can automatically configure and launch the Pi coding agent with the SDLAIC skills using a single command:\n```bash\nsdlaic open pi\n```\n*(This command automatically initializes the workspace if needed, injects an idempotent SDLAIC workflow block into the project's `AGENTS.md`, installs the `sdlaic` pi package **project-locally** (`.pi/settings.json` — scoped to this repo and shared with the team, so it never pollutes unrelated pi sessions), and starts a Pi session). Skills are then available as `/skill:enforcer`, `/skill:grillme <phase>`, `/skill:review <phase>`, etc.*\n\n#### Manual / Direct Pi Installation\n```bash\npi install -l git:github.com/bienwithcode/SDLAIC\n```\n*(`-l` writes the package to project-local `.pi/settings.json` instead of user-global `~/.pi/agent/settings.json`; drop it if you want the skills available in every project on the machine.)*\n\n### Codex\nSupport for Codex is coming in a later release.\n\n---\n\n## Workflow\n\nThe development lifecycle is a series of **phase-gated micro-loops**. Each phase produces exactly one artifact, and progression is allowed only when that artifact exists **and** its gate has passed. This prevents an agent from designing against unverified requirements or writing code from an unapproved plan.\n\nEach phase runs the same loop — **grill → draft → review → gate**:\n\n```\nnew ─► context.md\n        │  ┌─────────────── one micro-loop per phase ───────────────┐\n        ▼  │ grill (challenge) → draft (write) → review (audit) → gate │\n  proposal │ ── proposal.md ───────────────────────────► gate:proposal ✓\n  spec     │ ── specs/<capability>/spec.md ──────► gate:spec:<capability> ✓ (per cap)\n  design   │ ── design.md ─────────────────────────────► gate:design ✓\n  tasks    │ ── tasks.md ──────────────────────────────► gate:tasks ✓\n        ▼  └───────────────────────────────────────────────────────┘\n  apply ─► code ─► review code ─► review.md\n```\n\nGate verdicts are stored **outside your repo** (see [Gate State](#gate-state)), so approvals never clutter your project.\n\n| Skill | Phase | What It Does |\n|-------|-------|-------------|\n| **enforcer** | Every turn | Routes to the correct phase from artifact presence **and** gate status. No skipping, no advancing past a failed/pending gate. |\n| **new** | Init | Decomposes the ticket into candidate scopes (+ a `🌟` recommendation), runs codebase research, initializes a change → `context.md` |\n| **grillme** | Grill (before every draft) | Parameterized Socratic challenge — loads the phase's grill checklist, asks tough questions one at a time; resolutions go in the artifact's *Challenge & Resolution Log* |\n| **proposal** | Scope (1A) | Owns the gated IN/OUT-OF-SCOPE decision (promotes recommended candidates) → `proposal.md` |\n| **spec** | Behavior (1B) | Formal GIVEN/WHEN/THEN requirements → `specs/<capability>/spec.md` |\n| **design** | Architecture (2) | Input-boundary validation, subsystem boundaries, DRY reuse → `design.md` |\n| **plan** | Planning (3) | Ordered TDD tasks grouped by subsystem milestone → `tasks.md` |\n| **review** | Review (after every draft) | Parameterized independent audit — loads the phase's audit checklist, issues APPROVE / REQUEST_CHANGES / REJECT, records the verdict via `sdlaic gate set` |\n| **apply** | Execution (4) | Implements one task at a time, verifies each, commits per task |\n| **review** (code) | Final audit | Two-pass compliance + quality audit of the diff → `review.md` |\n\n> `grillme` and `review` are **optional** and toggled by [workflow level](#workflow-levels): `strict` runs both; `light`/`free` skip them (draft-only fast path). The draft skill is always mandatory.\n\n---\n\n## Artifacts\n\nEach phase writes one artifact under the project's changes directory. Ask the\nCLI where that is — `sdlaic path changes` — rather than assuming a location:\n\n```\n$(sdlaic path change --change <change-name>)/\n├── context.md           # Candidate scopes (+ recommendation), research summary, actors & use cases\n├── proposal.md          # Scope contract: why, IN/OUT-OF-SCOPE, impact\n├── specs/               # Behavioral requirements (if user-facing)\n│   └── <capability>/\n│       └── spec.md      # Formal GIVEN/WHEN/THEN scenarios\n├── design.md            # Technical design: architecture, boundaries, decisions\n└── tasks.md             # Ordered TDD tasks by subsystem milestone (checkbox syntax)\n```\n\nSocratic-challenge output is recorded in a `## Challenge & Resolution Log` section **inside** each artifact.\n\n---\n\n## Gate State\n\nGate verdicts are **never** written into your project repo. They live in a global state store, keyed by project + change:\n\n```\n~/.sdlaic/state/<project_hash>/<change-name>/\n├── meta.json       # machine-readable gate state — source of truth for \"approved?\"\n├── review.md       # human-readable mirror of the latest verdict + findings\n└── history.jsonl   # append-only re-entry / follow-up events\n```\n\nA phase is **unblocked** only when its artifact exists **and** its gate is `approved` (or `skipped` in `light`/`free`). When a ticket changes mid-flight, `sdlaic gate reentry` re-enters the earliest affected artifact and supersedes everything downstream.\n\n---\n\n## CLI Commands\n\n```bash\nsdlaic init                           # Initialize workspace (if not using auto-init)\nsdlaic open claude                    # Install plugin and spawn Claude Code\nsdlaic new change \"<name>\"            # Create a new change\nsdlaic status                         # Show current phase and artifact status\nsdlaic status --json                  # Machine-readable status\nsdlaic instructions <artifact> -c <name>  # Get template (proposal | spec | design | tasks)\nsdlaic validate <name>                # Validate artifact format\nsdlaic validate <name> --strict       # Strict: all artifacts must exist\n\n# Gate state (verdicts stored in ~/.sdlaic/state/, never in your repo)\nsdlaic gate status -c <name>          # Show gate state for each phase\nsdlaic gate status -c <name> --json   # Machine-readable gate state\nsdlaic gate set -c <name> --phase <proposal|spec:<capability>|design|tasks> \\\n    --status <approved|failed|skipped> [--verdict <APPROVE|REQUEST_CHANGES|REJECT>] [--attempt]\nsdlaic gate reentry -c <name> --from <phase> --reason \"<why>\"   # Mid-flight change\n\nsdlaic list                           # List active changes\nsdlaic show <name>                    # Show change details\nsdlaic switch <name>                  # Set active change\nsdlaic archive <name>                 # Archive a completed change\n```\n\n---\n\n## Where Artifacts Live\n\nEach project's changes directory is recorded in `~/.sdlaic/config.json`. It\ndefaults to `<project>/.sdlaic/changes/`, and `--changes-dir` puts it anywhere\nyou like:\n\n```bash\nsdlaic init                                        # <project>/.sdlaic/changes/\nsdlaic init --changes-dir ~/work/openspec/changes  # outside the project entirely\nsdlaic config set changes-dir <path>               # change it later\nsdlaic path changes                                # print the resolved location\n```\n\nWhen the directory sits outside the project, SDLAIC creates **nothing** inside\nit — no config file, no `.sdlaic/` directory. One directory belongs to exactly\none project; pointing a second project at the same one is rejected.\n\nSDLAIC never writes to your `.gitignore`. If you want artifacts kept out of the\nrepo, either add the entry yourself or put the directory outside the repo.\n\n\n### Upgrading from a storage-mode release\n\n`storage_mode` in `sdlaic status --json` is replaced by `changes_dir`, an\nabsolute path — a **breaking change** for anything parsing that output.\n\nThe `local`, `ignored`, and `global` storage modes are gone, along with the\nproject-local `.sdlaicrc`. Existing files are left on disk and ignored; run\n`sdlaic init` once per project to register it. An old `~/.sdlaic/config.json`\nstill loads — its obsolete fields are dropped, and each project is treated as\nneeding a changes directory. Artifacts previously kept in\n`~/.sdlaic/stores/<hash>/changes/` are not migrated or deleted; point a project\nat them with `sdlaic config set changes-dir ~/.sdlaic/stores/<hash>/changes` if\nyou want them back.\n\n---\n\n## Workflow Levels\n\nThe workflow level controls whether the grill and review gates run around each draft:\n\n| Level | Behavior |\n|-------|----------|\n| `strict` | Grill **and** review run every phase; a gate must be `approved` to advance — default |\n| `light` | Draft-only fast path — grill/review skipped, gates auto-`skipped` |\n| `free` | No gate enforcement — gates auto-`skipped` |\n\nIn every level the **draft skill is mandatory** and artifacts are still produced in order; only the grill/review gates are toggled.\n\n---\n\n## License\n\n[MIT](LICENSE)\n",
  "bytes": 10581,
  "sha": "eaf1c20f6e6ccd467e040a3288ee02dfc73c3e873618d8b48b2d41511feebba9",
  "repo_slug": "bienwithcode/sdlaic",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_bienwithcode_sdlaic_29a783cc/readme"
}