{"id":49077370,"url":"https://github.com/bthos/agentic-kit","last_synced_at":"2026-04-20T10:34:05.156Z","repository":{"id":350319139,"uuid":"1204099777","full_name":"bthos/agentic-kit","owner":"bthos","description":"Reusable agentic development pipeline","archived":false,"fork":false,"pushed_at":"2026-04-18T21:33:45.000Z","size":174,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-18T23:28:58.852Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bthos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-07T17:32:32.000Z","updated_at":"2026-04-18T21:22:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bthos/agentic-kit","commit_stats":null,"previous_names":["bthos/agentic-kit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bthos/agentic-kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bthos%2Fagentic-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bthos%2Fagentic-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bthos%2Fagentic-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bthos%2Fagentic-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bthos","download_url":"https://codeload.github.com/bthos/agentic-kit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bthos%2Fagentic-kit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32043129,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T10:33:29.490Z","status":"ssl_error","status_checked_at":"2026-04-20T10:32:30.107Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-20T10:34:03.723Z","updated_at":"2026-04-20T10:34:05.144Z","avatar_url":"https://github.com/bthos.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Agentic Kit\n\nA reusable AI development pipeline — 4 agents, 4 skills, and a structured handoff protocol. Works with **Claude Code** (native `.claude/` layout), **Cursor** (symlinked `.cursor/skills/`, generated `.cursor/rules/*.mdc` for agents + `AGENTS.md`), and **GitHub Copilot** (generated `.github/agents/*.agent.md` + `.github/instructions/*.instructions.md`). \n\nImport as a git submodule in under a minute.\n\n## What it is\n\nA self-organizing team of AI agents for structured development. Each agent knows its role and who to hand off to next. Quality gates ensure nothing ships without passing Bagnik.\n\n```\nIdea → Vadavik (spec) → Lojma (UX) + Veles (docs, parallel)\n     → Cmok /skill/ (mockups) → User UAT\n     → Laznik (arch + tests) → Bagnik (test gate)\n     → Cmok /agent/ (build) + Veles (docs, parallel) → Bagnik (code QA)\n     → Zlydni (commit + archive)\n```\n\n### Agents\n\n| Agent   | Role                      | Model  |\n|---------|---------------------------|--------|\n| Bagnik  | Test gate \u0026 code QA       | Opus   |\n| Cmok    | Build                     | Sonnet |\n| Veles  | Documentation             | Sonnet |\n| Zlydni  | Commits \u0026 version control | Haiku  |\n\n### Skills\n\n| Skill    | Role                         |\n|----------|------------------------------|\n| Vadavik  | Spec \u0026 requirements          |\n| Lojma    | UX design                    |\n| Cmok     | UX mockups                   |\n| Laznik   | Architecture \u0026 tests         |\n\n## Quick start\n\n```bash\ncd your-project\ngit submodule add https://github.com/bthos/agentic-kit .agentic-kit\n.agentic-kit/init.sh\n```\n\n`init.sh` asks which IDE to target (**Claude Code**, **Cursor**, **GitHub Copilot**, or **all**). Non-interactive / CI:\n\n```bash\n.agentic-kit/init.sh --ide=claude    # default behavior\n.agentic-kit/init.sh --ide=cursor\n.agentic-kit/init.sh --ide=github\n.agentic-kit/init.sh --ide=all       # all three  (alias: --ide=both)\n\n# Agent / CI — no prompts at all:\n.agentic-kit/init.sh --non-interactive                  # claude (default)\n.agentic-kit/init.sh --non-interactive --ide=github\n.agentic-kit/init.sh -n --ide=all                       # short alias\n\n# Other non-interactive bulk choices:\n.agentic-kit/init.sh --skip-all       # keep all existing kit paths, no prompts\n.agentic-kit/init.sh --overwrite-all  # replace all kit-managed files, no prompts\n```\n\nWhen a path already exists, the interactive prompt is: **s**kip this file, **o**verwrite this file, overwrite **a**ll remaining, or skip **r**est (this file and every later conflict).\n\n`--non-interactive` / `-n` is the recommended flag for agents and CI (aliases: `--yes`, `-y`): it skips existing files, suppresses all Y/n prompts, and prints a structured **`[AGENT ACTION REQUIRED]`** block instructing the calling agent to fill `PROJECT.md` itself — no nested CLI process is spawned. The agent reads the script output and uses its own tools (Read / Glob / Edit) to replace the placeholders.\n\nThen open `PROJECT.md` and fill in the **Project-Specific Configuration** section:\n\n```markdown\n- Test command:   `npm test`\n- Build command:  `npm run build`\n- Version files:  `package.json, manifest.json`\n```\n\n**Claude Code:** start a feature with `/vadavik`.\n\n**Cursor:** each kit skill is symlinked to **`.cursor/skills/\u003cname\u003e/`** (with `SKILL.md` and bundled scripts) so [Cursor Agent Skills](https://cursor.com/docs/context/skills) pick them up. Agents become **`.cursor/rules/*.mdc`**. `PIPELINE.md.template` is copied to **`AGENTS.md`**. A `pipeline.mdc` rule uses `alwaysApply: true` so the handoff protocol is always in context. Invoke skills from chat with **`/\u003cskill-name\u003e`** or attach them as context; use **`@`** for rules files.\n\n**GitHub Copilot:** each agent becomes a `.github/agents/\u003cname\u003e.agent.md` custom agent (VS Code Copilot picks these up automatically). Each skill becomes a `.github/instructions/\u003cname\u003e.instructions.md` with `applyTo: '**'` so it applies to every chat. `PIPELINE.md.template` becomes `.github/copilot-instructions.md` — the workspace-wide instructions file Copilot always reads. Use `@\u003cagentname\u003e` in Copilot Chat to invoke a specific agent.\n\nThat's it.\n\n## What `init.sh` does\n\n**Always (all IDE modes):**\n\n1. Copies `PROJECT.md.template` → `PROJECT.md` if none exists, or when you choose to overwrite an existing `PROJECT.md`. After any fresh copy from the template, optionally fills placeholders via the CLI that matches `--ide`: **`claude -p`** (Claude Code) for `claude`, **`agent -p --force`** ([Cursor Agent CLI](https://cursor.com/docs/cli/overview)) for `cursor`. Use the **`agent`** binary from [Cursor CLI install](https://cursor.com/docs/cli/installation) — the GUI **`cursor`** launcher is Electron-based and is not used here (passing `-p` to it triggers Chromium “unknown option” warnings). For `all` / `github`, it prefers `claude` if installed, otherwise `agent`. If stdin is not a TTY but `/dev/tty` exists, the Y/n prompt is read from `/dev/tty` so the step is not skipped silently in some IDE terminals.\n\nThe kit does **not** modify `.gitignore` for `.artefacts/` — add an ignore rule yourself if you want that directory untracked.\n\nShared scripts live only under **`.agentic-kit/tools/`** — run them from the **project root**, for example `.agentic-kit/tools/validate-config.sh`.\n\n**Claude Code (`claude` or `all`):**\n\n2. Symlinks `agents/*.md` → `.claude/agents/`\n3. Symlinks `skills/*/` → `.claude/skills/`\n4. Copies `PIPELINE.md.template` → `CLAUDE.md` if none exists\n\n**Cursor (`cursor` or `all`):**\n\n5. Symlinks `skills/*/` → `.claude/skills/` (Cursor-only mode only — so paths like `.claude/skills/vadavik/new-feature.sh` in skill docs still work)\n6. Symlinks `skills/*/` → `.cursor/skills/` (same relative layout as the kit — **re-run `init.sh` after `git submodule update`** to refresh)\n7. Generates `.cursor/rules/*.mdc` from **agents only** (copies, not symlinks). Optional YAML frontmatter `cursor_rule_name` overrides the basename (e.g. Cmok agent uses `cmok-build.mdc`).\n8. Writes `pipeline.mdc` (`alwaysApply: true`) from `PIPELINE.md.template` (minus the `@PROJECT.md` line)\n9. Copies `PIPELINE.md.template` → `AGENTS.md` with a kit-managed marker (for teardown)\n\n**GitHub Copilot (`github` or `all`):**\n\n10. Symlinks `skills/*/` → `.claude/skills/` (Copilot-only mode only — for bundled shell scripts)\n11. Generates `.github/agents/\u003cname\u003e.agent.md` from each agent (copies, not symlinks — **re-run `init.sh` after `git submodule update`** to refresh). Strips Claude-specific fields; adds standard Copilot `tools` list.\n12. Generates `.github/instructions/\u003cname\u003e.instructions.md` from each skill with `applyTo: '**'`\n13. Writes `.github/copilot-instructions.md` from `PIPELINE.md.template` (minus the `@PROJECT.md` line) with a kit-managed marker\n\nThe script is **idempotent** — existing kit-managed files prompt for overwrite (or **s** / **o** / **a** / **r** as above). For CI or scripts, use **`--force`** / **`--overwrite-all`** or **`--skip`** / **`--skip-all`** so nothing blocks on prompts.\n\n## Updating the kit\n\nOne command (pulls the submodule’s **remote** tracking branch, then runs `init.sh` with your usual flags):\n\n```bash\n.agentic-kit/update.sh --ide=cursor --skip          # example: match how you first ran init\n.agentic-kit/update.sh --non-interactive --ide=all\n.agentic-kit/update.sh --no-pull --ide=github --skip   # submodule already updated; only re-run init\n```\n\nEquivalent manual steps:\n\n```bash\ngit submodule update --remote .agentic-kit\n.agentic-kit/init.sh   # same --ide= / --skip / etc. as before\n\ngit add .agentic-kit\ngit commit -m \"chore: update agentic-kit\"\n```\n\n**What updates automatically:**\n- New agents and skills — `init.sh` creates missing symlinks; existing symlinks are untouched\n- Scripts under `.agentic-kit/tools/` — they ship with the submodule; `git submodule update` brings new versions\n\n**Cursor:** `.cursor/skills/` symlinks and `.cursor/rules/*.mdc` copies — after updating the submodule, run `init.sh` again (same `--ide=` as before) to refresh them from the new kit sources.\n\n**GitHub Copilot:** same as Cursor — `.github/agents/*.agent.md` and `.github/instructions/*.instructions.md` are generated copies; re-run `init.sh --ide=github` (or `--ide=all`) after `git submodule update`.\n\n**What does NOT update automatically:**\n- `CLAUDE.md` — your project's copy is never overwritten. To pick up protocol changes, diff it against the new template:\n  ```bash\n  diff CLAUDE.md .agentic-kit/PIPELINE.md.template\n  ```\n- `AGENTS.md` — same as `CLAUDE.md` for Cursor users; re-copy from template manually or delete and re-run `init.sh --ide=cursor`\n- `PROJECT.md` — project-specific config, never touched\n- Any agent/skill you replaced with a local file (override) — `init.sh` skips non-symlink files\n\n**Team members:** after pulling, run `git submodule update --init` to sync the submodule to the committed version (no `--remote` needed — that's only for the person pulling the new release).\n\n## Overriding an agent or skill\n\nTo customize an agent for your project, replace its symlink with a local file:\n\n```bash\nrm .claude/agents/bagnik.md\ncp .agentic-kit/agents/bagnik.md .claude/agents/bagnik.md\n# Edit .claude/agents/bagnik.md to your needs\n```\n\n`init.sh` skips files that already exist, so your override persists across updates.\n\nFor **Cursor** skills, `.cursor/skills/\u003cname\u003e` is a symlink to the kit; replace it with a real directory (copy the kit folder and edit) if you need a project-local override — `init.sh` will then skip that path.\n\n## Removing the kit\n\n```bash\n# Remove Claude symlinks, Cursor kit-managed rules, AGENTS.md\n.agentic-kit/teardown.sh\n\n# Or remove the above AND the submodule in one step\n.agentic-kit/teardown.sh --remove-submodule\n```\n\n`teardown.sh` removes kit skill symlinks under `.cursor/skills/`, then only files that contain the kit marker (`\u003c!-- agentic-kit managed --\u003e`): `.cursor/rules/*.mdc`, `AGENTS.md`, `.github/agents/*.agent.md`, `.github/instructions/*.instructions.md`, `.github/copilot-instructions.md`. Files you added yourself are left alone.\n\n## Feature artifacts\n\nAll feature work lives under `.artefacts/`:\n\n```\n.artefacts/\n├── features/\n│   └── YYYY-MM-DD-feature-name/   ← active feature (spec, UX, tech plan, handoffs)\n└── archive/\n    └── YYYY-MM-DD-feature-name/   ← completed features (moved by Zlydni after commit)\n```\n\nVadavik creates the feature folder automatically when starting a new spec.\n\n## Invocation reference\n\n| What | How |\n|------|-----|\n| Write or update spec | `/vadavik` |\n| Design UX | `/lojma` |\n| Create UX mockups | `/cmok` |\n| Architecture \u0026 tests | `/laznik` |\n| Run test gate or code QA | `@bagnik` |\n| Build | `@cmok` |\n| Write docs | `@veles` |\n| Commit | `@zlydni` |\n\n## Scripts\n\nEach skill bundles its own script. Shared scripts live in `.agentic-kit/tools/`. Run them from the **project root** so paths like `PROJECT.md` and `.artefacts/` resolve correctly.\n\n### Skill scripts (bundled, symlinked automatically)\n\n| Script | Invoked by | What it does |\n|--------|-----------|--------------|\n| `.claude/skills/vadavik/new-feature.sh \u003cslug\u003e` | Vadavik | Creates `.artefacts/features/YYYY-MM-DD-\u003cslug\u003e/` with `spec.md` skeleton and `handoff-log.md` |\n| `.claude/skills/laznik/check-coverage.sh [feature-path]` | Laznik | Runs test command, prints results, appends coverage entry to `handoff-log.md` |\n\n### Shared tools\n\n| Script | What it does |\n|--------|-------------|\n| `.agentic-kit/tools/bump-version.sh patch\\|minor` | Bumps version in all files listed in `PROJECT.md` (Cmok uses `patch`, Zlydni uses `minor`) — run from project root |\n| `.agentic-kit/tools/validate-config.sh` | Checks `PROJECT.md` for unfilled `\u003cplaceholder\u003e` values — run after `init.sh` |\n| `.agentic-kit/tools/feature-status.sh` | Shows pipeline status for active features in `.artefacts/features/` |\n\n### Lifecycle scripts\n\n| Script | What it does |\n|--------|-------------|\n| `lib.sh` | Shared helpers (colors, paths, `AGENTIC_MARKER`) — sourced by `init.sh`, `update.sh`, and `teardown.sh`, not run directly |\n| `update.sh` | `git submodule update --remote` for the kit, then `exec` into `init.sh` with the same arguments you pass (optional `--no-pull` to skip the fetch) |\n| `init.sh` | IDE choice: Claude Code, Cursor, Copilot, or all; symlinks / generates rules; copies `CLAUDE.md` / `AGENTS.md` / `PROJECT.md` |\n| `teardown.sh` | Removes `.claude/` symlinks, `.cursor/skills/` kit symlinks, kit-managed `.cursor/rules/*.mdc`, `AGENTS.md`, `.github/agents/*.agent.md`, `.github/instructions/*.instructions.md`, `.github/copilot-instructions.md`; `--remove-submodule` deinits git |\n\n## Handoff protocol\n\nSee `CLAUDE.md` or `AGENTS.md` (Handoff Protocol section) for the full structured handoff format, handoff map, and agent-specific checklists.\n\n## Team use\n\nCommit the submodule reference so the whole team shares the same pipeline version:\n\n```bash\ngit add .agentic-kit .gitmodules\ngit commit -m \"chore: add agentic-kit submodule\"\n```\n\nTeam members clone with `git clone --recurse-submodules` or run `git submodule update --init` after cloning.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbthos%2Fagentic-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbthos%2Fagentic-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbthos%2Fagentic-kit/lists"}