{"id":50450807,"url":"https://github.com/dan1d/claude-ninja","last_synced_at":"2026-06-01T00:02:11.998Z","repository":{"id":360753949,"uuid":"1204379379","full_name":"dan1d/claude-ninja","owner":"dan1d","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-27T18:04:02.000Z","size":2180,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T19:27:46.498Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/dan1d.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-08T00:41:22.000Z","updated_at":"2026-05-27T18:05:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dan1d/claude-ninja","commit_stats":null,"previous_names":["dan1d/claude-ninja"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/dan1d/claude-ninja","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan1d%2Fclaude-ninja","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan1d%2Fclaude-ninja/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan1d%2Fclaude-ninja/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan1d%2Fclaude-ninja/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dan1d","download_url":"https://codeload.github.com/dan1d/claude-ninja/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan1d%2Fclaude-ninja/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33753926,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-06-01T00:02:10.435Z","updated_at":"2026-06-01T00:02:11.988Z","avatar_url":"https://github.com/dan1d.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# claude-ninja\n\nA batteries-included Claude Code configuration kit. Ships 53 dev agents (including a 5-judge quality pipeline), 20 marketing agents, 3 global commands, auto-routing hooks, Obsidian integration, and persistent memory \u0026mdash; installed with one command.\n\n```\n  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\n  ░                                        ░\n  ░            ██████                       ░\n  ░           ████████                      ░\n  ░           ██◉◉████                      ░\n  ░           ████████                      ░\n  ░         ▄████████████▄                  ░\n  ░          ████ ████ ████                 ░\n  ░          ████ ████ ████                 ░\n  ░          ██▀   ██   ▀██                 ░\n  ░                                        ░\n  ░   claude-ninja                         ░\n  ░   Your AI development environment      ░\n  ░                                        ░\n  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\n```\n\n---\n\n## Quick Start\n\n```bash\nnpx github:dan1d/claude-ninja\n```\n\nThat's it. The installer walks you through each step with progress indicators and skips anything already installed.\n\n### Updating\n\nAlready installed? Pull the latest agents, commands, hooks, and plugins:\n\n```bash\nnpx github:dan1d/claude-ninja --update\n```\n\nThis overwrites code files (agents, commands, hooks, plugins) but preserves your local data (memory files, Obsidian notes) since those evolve per-machine.\n\n### What gets installed\n\n| Component | Count | Destination |\n|-----------|-------|-------------|\n| Dev agents | 53 | `~/.claude/agents/` |\n| Marketing agents | 20 | `~/.claude/agents/` |\n| Global commands | 3 | `~/.claude/commands/` |\n| Auto-route hooks | 2 | `~/.claude/hooks/` + `settings.json` |\n| Obsidian skill plugin | 1 | `~/.claude/plugins/cache/` |\n| Memory MCP server | 1 | `~/.claude/settings.json` |\n| `OBSIDIAN_VAULT` env var | \u0026mdash; | `~/.zshrc` or `~/.bashrc` |\n\n---\n\n## Prerequisites\n\n- [Claude Code](https://claude.ai/code) installed (CLI, desktop app, or IDE extension)\n- [Node.js](https://nodejs.org/) 16+\n- macOS or Linux\n- (Optional) [Obsidian](https://obsidian.md/) for the vault integration\n- (Optional) [GitHub CLI](https://cli.github.com/) for `gh auth` check\n\n---\n\n## How It Works\n\nclaude-ninja turns Claude Code from a general-purpose assistant into a **team of specialists** that auto-route to the right agent based on what you're doing.\n\n### 1. Agents \u0026mdash; your specialist team\n\nEvery `.md` file in `agents/` defines a specialist persona. When Claude encounters a task, the `agent-organizer` reads the situation and delegates to the best-fit agent:\n\n```\nYou edit a React component\n  └─ auto-route hook fires → routes to react-pro agent\n\nYou type \"add Stripe webhook\"\n  └─ prompt-route hook fires → routes to payment-integration agent\n\nYou run /next\n  └─ agent-organizer reads your tracker → picks the right specialist\n```\n\n### 2. Commands \u0026mdash; workflows you can invoke\n\n| Command | What it does |\n|---------|-------------|\n| `/plan` | Create plan, execute, run tests + lint, update Obsidian tracker |\n| `/e2e` | Run E2E tests via Playwright MCP with integration pre-checks |\n| `/marketing` | Route to the marketing agent team |\n\n### 3. Hooks \u0026mdash; automatic routing\n\nThree hooks fire automatically:\n\n- **`auto-route.js`** (PostToolUse) \u0026mdash; after every file edit, matches the file path to a specialist (JSX → `react-pro`, models → `ruby-on-rails-pro`, etc.)\n- **`prompt-route.js`** (UserPromptSubmit) \u0026mdash; scores your prompt against keyword rules and routes to the matching domain agent\n- **`post-task-review.js`** (Stop) \u0026mdash; after every task that modifies source files, automatically runs code-reviewer-pro → impl-judge → test-judge (with reflexion loops), then updates the Obsidian Dev Tracker\n\n### 4. Quality pipeline \u0026mdash; 5-judge LLM-as-Judge\n\nFive LLM-as-Judge agents form a quality gate at every development stage. Each gate uses a **reflexion loop**: if the verdict is WARN/FAIL, the critique is injected as context and the agent retries automatically (max 2 retries). Inspired by [Hive](https://www.open-hive.com/) patterns (Reflexion from Shinn et al., NeurIPS 2023).\n\n```\n/plan → [plan-judge] ←reflexion─┐\n            │                    │\n       WARN/FAIL? ── revise ────┘\n            │ PASS\n            ▼\n     implement → [impl-judge] ←reflexion─┐    ← auto (post-task hook)\n                      │                   │\n                 WARN/FAIL? ── fix ──────┘\n                      │ PASS\n                      ▼\n              [test-judge] ←reflexion─┐        ← auto (post-task hook)\n                    │                  │\n               WARN/FAIL? ── fix ────┘\n                    │ PASS\n                    ▼\n         [integration-judge] → [e2e-judge]     ← manual (/e2e)\n```\n\n| Judge | When it fires | What it catches |\n|-------|--------------|-----------------|\n| `plan-judge` | Inside `/plan` (step 3.5) | Missing infrastructure, incomplete paths, no error handling, no verification strategy |\n| `impl-judge` | Automatic (post-task hook) | Dead buttons, unwired handlers, missing routes, defined-but-never-called side effects |\n| `test-judge` | Automatic (post-task hook) | Vacuous assertions, mocks that defeat their purpose, missing edge cases |\n| `integration-judge` | `/e2e` pre-check | Missing env vars, unreachable services, expired API keys, pending migrations |\n| `e2e-judge` | `/e2e` | Off-screen elements, stuck spinners, UI/network state mismatch, dead interactions |\n\nOnly `/plan` needs to be invoked manually. Everything else fires automatically via hooks.\n\n### 5. Obsidian integration (optional)\n\nIf you use Obsidian for project notes, claude-ninja connects Claude Code to your vault. This requires a few pieces:\n\n#### What you need\n\n1. **[Obsidian](https://obsidian.md/)** installed and running with a vault open\n2. **Obsidian Skills plugin** for Claude Code (from [kepano/obsidian-skills](https://github.com/kepano/obsidian-skills))\n3. **`OBSIDIAN_VAULT` env var** pointing to your vault path\n4. **A `.claude/obsidian-project` file** in each project repo\n\n#### Step-by-step setup\n\n**1. Install the Obsidian Skills plugin in Claude Code**\n\nThe installer copies a bundled version, but you can also install from the marketplace:\n\n```bash\n# Inside Claude Code, run:\n/plugins\n```\n\nThen add the `obsidian-skills` marketplace and enable the plugin:\n\n```\n# Add the marketplace source (one time)\n/plugin marketplace add kepano/obsidian-skills\n\n# Install and enable\n/plugin install obsidian@obsidian-skills\n```\n\nOr, if the installer already copied it, just enable it in `/plugins`.\n\n**2. Set the `OBSIDIAN_VAULT` environment variable**\n\nThe installer adds this to your shell profile automatically, but if you need to set it manually:\n\n```bash\n# Add to ~/.zshrc or ~/.bashrc\nexport OBSIDIAN_VAULT=\"$HOME/Documents/obsidian/YourVaultName\"\n\n# Reload\nsource ~/.zshrc\n```\n\n**3. Make sure Obsidian is running**\n\nThe Obsidian CLI skill communicates with the running Obsidian app. It won't work if Obsidian is closed. The installer checks this and offers to launch it.\n\n**4. Create your vault structure**\n\nFor each project, create a folder in your Obsidian vault. The only **required** file is `Dev/Dev Tracker.md` \u0026mdash; everything else is optional and grows as the project matures.\n\n**Minimal setup (enough to get started):**\n\n```\nYourVaultName/\n└── YourProject/\n    └── Dev/\n        └── Dev Tracker.md          # Task list (Claude reads/writes this)\n```\n\n**Full structure (for a mature project):**\n\nHere's a real example from the GymsRatz project \u0026mdash; a gym management SaaS:\n\n```\nYourVaultName/\n└── gymsratz/\n    ├── Product Vision \u0026 Envision.md   # What the product is, who it's for, architecture\n    ├── CEO Plan.md                    # Roadmap, go-to-market, pricing, projections\n    ├── Competitive Analysis.md        # Market landscape, competitor gaps\n    ├── Design Prompt.md               # Full UI/UX spec for Claude Design\n    ├── Decisions.md                   # Architectural choices + why (append-only)\n    └── Dev/\n        ├── Dev Tracker.md             # In Progress / Up Next / Completed\n        └── Tickets.md                 # Backlog with acceptance criteria\n```\n\n**Notes you might add per project:**\n\n| Note | Purpose | When to add |\n|------|---------|-------------|\n| `Dev/Dev Tracker.md` | Task list Claude reads at session start | **Always** (required) |\n| `Product Vision \u0026 Envision.md` | Product definition, user roles, data model | Day 1 of a new product |\n| `CEO Plan.md` | Roadmap, pricing, go-to-market, revenue projections | When planning launch |\n| `Competitive Analysis.md` | Competitor landscape, feature gaps | Before pricing/positioning |\n| `Design Prompt.md` | Full UI spec for Claude Design or other AI design tools | Before design phase |\n| `Decisions.md` | Append-only log of architectural decisions + rationale | Ongoing |\n| `Dev/Tickets.md` | Detailed ticket backlog with acceptance criteria | When breaking work into tickets |\n\nThe structure is flexible. Add notes as you need them. The only convention Claude enforces is that `Dev/Dev Tracker.md` exists and follows the In Progress / Up Next / Completed format.\n\n**5. Connect a project to Obsidian**\n\n```bash\ncd your-project/\nmkdir -p .claude\necho 'YourProject' \u003e .claude/obsidian-project\n```\n\nThe value must match the folder name in your vault (e.g., if your vault has `MyVault/gymsratz/Dev/Dev Tracker.md`, use `echo 'gymsratz'`).\n\n#### What it does once connected\n\n- **Session start**: Claude reads your Dev Tracker (and any other project notes) from Obsidian before starting work\n- **Task gate**: A PreToolUse hook blocks code edits until a task plan exists in the Dev Tracker\n- **Session end**: A Stop hook updates your Obsidian notes with what changed\n\n#### Dev Tracker format\n\nThe Dev Tracker follows a simple format that Claude reads and writes:\n\n```markdown\n# ProjectName — Dev Tracker\n\n## In Progress\n\n- [ ] Build user authentication — 2026-05-09 14:00\n    - Plan: Implement email/password auth with Supabase, add login/register screens\n    - Files: src/auth/, src/screens/Login.tsx, src/screens/Register.tsx\n\n## Up Next\n\n- [ ] Add payment integration with MercadoPago\n- [ ] Build routine builder for trainers\n\n## Completed\n\n- [x] Set up monorepo with Turborepo — 2026-05-06\n- [x] Create database schema — 2026-05-07\n```\n\nWhen you run `/next`, Claude reads this file, sees what's in progress (or picks the first item from Up Next), and starts working. When a task is done, it ticks the checkbox and moves it to Completed.\n\n### 6. Persistent memory\n\nAn MCP-based SQLite memory system (via [AgentKits Memory](https://github.com/aitytech/agentkits-memory)) that persists across sessions:\n\n- Automatic session summaries\n- Searchable project history\n- Decision tracking\n- Browse at `http://localhost:1905` via `npx @aitytech/agentkits-memory web`\n\n---\n\n## All Agents\n\n### Dev Agents (53)\n\n| Agent | Specialty |\n|-------|-----------|\n| `agent-organizer` | Routes tasks to the right specialist |\n| `ai-engineer` | LLM apps, RAG, prompt pipelines |\n| `api-documenter` | OpenAPI specs, SDK guides |\n| `architect-review` | Architecture consistency review |\n| `backend-architect` | System design, scalability |\n| `cloud-architect` | AWS/Azure/GCP, Terraform, FinOps |\n| `code-reviewer` | Code quality, security, performance |\n| `data-engineer` | ETL, Spark, Airflow, Kafka |\n| `data-scientist` | SQL, BigQuery, data analysis |\n| `database-optimizer` | Query tuning, schema design |\n| `debugger` | Error diagnosis, test failures |\n| `deployment-engineer` | CI/CD, containers, GitOps |\n| `devops-incident-responder` | Incident response, RCA |\n| `documentation-expert` | Technical documentation |\n| `dx-optimizer` | Developer experience improvement |\n| `e2e-judge` | LLM-as-Judge for browser E2E verification |\n| `electron-pro` | Cross-platform desktop apps |\n| `financial-analyst` | SaaS metrics, financial modeling |\n| `frontend-developer` | React components, UI |\n| `full-stack-developer` | End-to-end web apps |\n| `golang-pro` | Go architecture and concurrency |\n| `graphql-architect` | GraphQL API design |\n| `heroku-pro` | Heroku deployment optimization |\n| `impl-judge` | LLM-as-Judge for implementation completeness |\n| `incident-responder` | Production incident commander |\n| `integration-judge` | Pre-E2E service connectivity verifier |\n| `legacy-modernizer` | Monolith decomposition, upgrades |\n| `ml-engineer` | ML model lifecycle, MLOps |\n| `mobile-developer` | React Native, Flutter |\n| `nextjs-pro` | Next.js SSR/SSG, App Router |\n| `payment-integration` | Stripe, PayPal, webhooks |\n| `performance-engineer` | Profiling, optimization |\n| `plan-judge` | LLM-as-Judge for plan quality evaluation |\n| `postgres-pro` | PostgreSQL, PgLite |\n| `product-manager` | Product strategy, roadmaps |\n| `prompt-engineer` | LLM prompt design |\n| `python-pro` | Python optimization, patterns |\n| `qa-expert` | Test strategy, quality assurance |\n| `rails-architect` | Rails system design |\n| `rails-react-pro` | Rails API + React frontend |\n| `react-pro` | React, hooks, state management |\n| `ruby-on-rails-pro` | Rails implementation |\n| `security-auditor` | Security assessment, OWASP |\n| `sparring-partner` | Stress-test your thinking |\n| `startup-analyst` | Market sizing, unit economics |\n| `startup-roast` | Brutally honest idea critique |\n| `tdd-orchestrator` | Test-driven development |\n| `test-automator` | Test automation, CI testing |\n| `test-judge` | LLM-as-Judge for test quality |\n| `typescript-pro` | TypeScript architecture |\n| `ui-designer` | UI design, design systems |\n| `ux-designer` | UX research, usability |\n\n### Marketing Agents (20)\n\nFrom [AgentKits Marketing](https://github.com/aitytech/agentkits-marketing):\n\n| Agent | Specialty |\n|-------|-----------|\n| `attraction-specialist` | Lead gen, landing pages, SEO |\n| `brainstormer` | Campaign ideation |\n| `brand-voice-guardian` | Brand consistency review |\n| `command-helper` | Intent-based command discovery |\n| `continuity-specialist` | Retention, re-engagement |\n| `conversion-optimizer` | CRO, A/B testing |\n| `copywriter` | High-converting copy |\n| `docs-manager` | Marketing documentation |\n| `email-wizard` | Email sequences, automation |\n| `lead-qualifier` | Lead scoring, segmentation |\n| `mcp-manager` | MCP server integration |\n| `persona-builder` | Customer persona discovery |\n| `planner` | Campaign planning, calendars |\n| `project-manager` | Campaign coordination |\n| `researcher` | Market research, competitive intel |\n| `sales-enabler` | Sales collateral, objection handling |\n| `seo-specialist` | SEO optimization |\n| `solopreneur` | Solo founder perspective review |\n| `startup-founder` | Startup founder perspective review |\n| `upsell-maximizer` | Revenue expansion, upsells |\n\n---\n\n## Customization\n\n### Add your own agent\n\n1. Create `agents/my-agent.md` with a system prompt defining the persona\n2. Update `agents/agent-organizer.md` routing table so tasks get routed to it\n3. Reinstall: `npx github:dan1d/claude-ninja`\n\n### Add a global command\n\n1. Create `commands/my-command.md` with the command prompt\n2. Update `src/steps/commands.js` to copy the new file\n3. Reinstall or manually copy: `cp commands/my-command.md ~/.claude/commands/`\n\n### Add auto-route rules\n\nEdit `src/hooks/auto-route.js` to add file-path matching rules:\n\n```javascript\n// Example: route .py files to python-pro\nif (filePath.endsWith('.py')) {\n  console.log('[ROUTE] Python file → use python-pro agent');\n}\n```\n\n### Use without Obsidian\n\nThe Obsidian integration is fully optional. If you don't use Obsidian:\n- The installer skips vault steps if Obsidian isn't detected\n- Agents and commands work independently\n- The task gate hook won't fire without `.claude/obsidian-project`\n\n### Per-project setup\n\nAfter installing globally, connect a specific project:\n\n```bash\ncd your-project/\n\n# (Optional) Connect to Obsidian vault\necho 'YourProjectName' \u003e .claude/obsidian-project\n\n# (Optional) Add project-specific agent overrides\nmkdir -p .claude/agents/\n# Add .md files here to override global agents for this project\n```\n\n---\n\n## Repo Structure\n\n```\nclaude-ninja/\n├── agents/                     # 53 dev agent definitions (.md)\n│   └── marketing/              # 20 marketing agents (AgentKits Marketing)\n├── bin/\n│   └── cli.js                  # npx entry point\n├── commands/                   # Global slash commands\n│   ├── plan.md                 # Plan → execute → test → lint → update tracker\n│   ├── e2e.md                  # E2E testing with integration pre-checks\n│   ├── marketing.md            # Marketing dispatcher\n│   └── marketing/              # Marketing sub-commands\n├── memory/                     # Project memory files (per-workspace)\n├── obsidian/                   # Obsidian vault templates\n├── plugins/\n│   └── obsidian-skills/        # Obsidian CLI skill plugin\n├── skills/\n│   └── marketing/              # AgentKits Marketing skills\n├── src/\n│   ├── installer.js            # Main installer orchestrator\n│   ├── hooks/                  # Auto-routing hook scripts\n│   └── steps/                  # One file per install step\n├── install.sh                  # Legacy bash installer (still works)\n├── package.json\n├── CLAUDE.md                   # Claude Code project context\n└── README.md\n```\n\n---\n\n## How the Installer Works\n\nThe `npx` installer runs 10 steps sequentially, each with a spinner and pass/fail indicator:\n\n| Step | Module | What it does |\n|------|--------|-------------|\n| 1 | `steps/agents.js` | Copies agent `.md` files to `~/.claude/agents/` |\n| 2 | `steps/commands.js` | Copies command `.md` files to `~/.claude/commands/` |\n| 3 | `steps/obsidian-skill.js` | Installs the Obsidian CLI plugin |\n| 4 | `steps/obsidian-notes.js` | Copies vault templates to Obsidian |\n| 5 | `steps/memory-mcp.js` | Installs AgentKits Memory MCP server |\n| 6 | `steps/env-var.js` | Sets `OBSIDIAN_VAULT` in shell profile |\n| 7 | `steps/memory-files.js` | Copies memory files to Claude project dirs |\n| 8 | `steps/hooks.js` | Installs auto-route hooks + settings.json |\n| 9 | `steps/github-auth.js` | Checks `gh` CLI authentication |\n| 10 | `steps/obsidian-app.js` | Checks if Obsidian is running |\n\nAll steps are **non-destructive** \u0026mdash; they skip existing files and never overwrite your config.\n\n---\n\n## Alternative Install\n\nIf you prefer the bash script over npx:\n\n```bash\ngit clone https://github.com/dan1d/claude-ninja.git\ncd claude-ninja\n./install.sh\n```\n\n---\n\n## FAQ\n\n**Can I use this without Obsidian?**\nYes. Agents, commands, hooks, and memory all work independently. The Obsidian integration adds session context loading and task tracking, but is fully optional.\n\n**Will this overwrite my existing agents or settings?**\nNo. The installer is non-destructive \u0026mdash; it copies files but doesn't overwrite existing ones.\n\n**How do I update?**\nRun `npx github:dan1d/claude-ninja` again. It re-copies all files.\n\n**Does it work on Linux?**\nYes. The installer detects the platform and adjusts paths. Obsidian-related steps are macOS/Linux compatible.\n\n**Can I add my own agents alongside these?**\nAbsolutely. Drop `.md` files in `~/.claude/agents/` and they'll coexist with the ninja agents.\n\n---\n\n## Credits\n\n- [Obsidian Skills](https://github.com/kepano/obsidian-skills) by [@kepano](https://github.com/kepano) \u0026mdash; Obsidian CLI plugin for Claude Code\n- [AgentKits Marketing](https://github.com/aitytech/agentkits-marketing) \u0026mdash; 20 marketing agents\n- [AgentKits Memory](https://github.com/aitytech/agentkits-memory) \u0026mdash; Persistent memory MCP server\n- [Everything Claude Code](https://github.com/affaan-m/everything-claude-code) \u0026mdash; Inspiration for the plan command and ECC agents\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdan1d%2Fclaude-ninja","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdan1d%2Fclaude-ninja","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdan1d%2Fclaude-ninja/lists"}