[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DF6QMJ9AJKFKHHKRT005PQ":3,"skill-same:01M6DF6QMJ9AJKFKHHKRT005PQ":202},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":24,"linkOnly":25,"markdownContent":26,"markdownBody":27,"frontMatter":28,"refName":29,"commitSha":30,"skillDirectory":31,"forksCount":14,"repositoryHtmlUrl":32,"repositoryHomepageUrl":6,"ownerHtmlUrl":33,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":34,"install":35,"resources":48},"01M6DF6QMJ9AJKFKHHKRT005PQ","setup",null,"Interactive project setup — detects your project, configures metaswarm, writes project-local files","Prekzursil\u002Fagent-skills-toolchain","Prekzursil","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F54636077?v=4","01M6DACZ1PCQHD99SCR1YXG28B","Andrei Mihai Visalon","01M6DACZ670WZF535V3WYYSS4Z",0,"MIT","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002FSKILL.md",[],[5,19,20,21,22,23],"interactive","project setup","files","local","project","2026-11-10 10:12:30",false,"---\nname: setup\ndescription: Interactive project setup — detects your project, configures metaswarm, writes project-local files\n---\n\n# Setup\n\nInteractive, Claude-guided setup for metaswarm. Detects your stack, asks targeted questions, writes project-local files, and creates command shims. Replaces both `npx metaswarm init` and the old `\u002Fmetaswarm-setup` command.\n\n\u003CCRITICAL-REQUIREMENTS>\nSetup MUST produce these 3 mandatory outputs. A shell script handles them automatically — you MUST run it.\n\nAfter Phase 2 (user questions), determine the correct coverage command from the detection results, then run this Bash command:\n\n```bash\nbash \"${CLAUDE_PLUGIN_ROOT}\u002Flib\u002Fsetup-mandatory-files.sh\" \"$(pwd)\" \u003Cthreshold> \"\u003Ccoverage-command>\"\n```\n\nWhere:\n- `\u003Cthreshold>` is the user's chosen percentage (e.g., `100`)\n- `\u003Ccoverage-command>` is the enforcement command for their test runner:\n  - pytest → `\"pytest --cov --cov-fail-under=\u003Cthreshold>\"`\n  - vitest\u002Fpnpm → `\"pnpm vitest run --coverage\"`\n  - jest\u002Fnpm → `\"npx jest --coverage\"`\n  - go → `\"go test -coverprofile=coverage.out .\u002F...\"`\n  - cargo → `\"cargo tarpaulin --fail-under \u003Cthreshold>\"`\n\nThe script handles:\n1. **CLAUDE.md** — appends metaswarm section (or writes new), skips if already present\n2. **`.coverage-thresholds.json`** — writes at project root with correct thresholds and command\n3. **6 shims in `.claude\u002Fcommands\u002F`** — writes `start-task.md`, `prime.md`, `review-design.md`, `self-reflect.md`, `pr-shepherd.md`, `brainstorm.md`\n\nThe script outputs JSON with what was created\u002Fskipped\u002Ferrored. Check that `\"status\": \"ok\"`.\n\n**If the script is not available or fails**, fall back to writing these files manually with the Write tool. Do NOT skip them.\n\u003C\u002FCRITICAL-REQUIREMENTS>\n\n## Pre-Flight\n\n### Existing Profile Check\n\nUse Glob to check if `.metaswarm\u002Fproject-profile.json` exists.\n\n- **If it exists**: Read it, present the current configuration summary, and ask the user via AskUserQuestion: \"You already have a metaswarm project profile. Re-run setup (overwrites choices) or skip?\" Options: \"Re-run setup\" \u002F \"Skip\". If the user skips, stop with: \"Setup skipped. Existing configuration unchanged.\"\n- **If it does not exist**: Continue to Project Detection.\n\n---\n\n## Phase 1: Project Detection\n\nScan the project directory silently using Glob and Read. Do NOT ask the user for any of this information. Detect everything, then present results.\n\n### 1.1 Language\n\nCheck for marker files at the project root:\n\n| Marker File | Language |\n|---|---|\n| `package.json` | Node.js \u002F JavaScript |\n| `tsconfig.json` | TypeScript (refines Node.js to TypeScript) |\n| `pyproject.toml` OR `setup.py` OR `requirements.txt` | Python |\n| `go.mod` | Go |\n| `Cargo.toml` | Rust |\n| `pom.xml` OR `build.gradle` OR `build.gradle.kts` | Java |\n| `Gemfile` | Ruby |\n| `Makefile` (alone, no other markers) | Unknown (ask user) |\n\nIf `tsconfig.json` exists alongside `package.json`, the language is \"TypeScript\".\n\nIf multiple languages are detected, note all of them but use the primary one (most infrastructure) for command generation.\n\n**If no language detected**: Use AskUserQuestion to ask the user what language\u002Fstack they are using before proceeding.\n\n### 1.2 Framework\n\n**Node.js\u002FTypeScript** — Read `package.json` and check `dependencies` + `devDependencies`:\n\n| Dependency | Framework |\n|---|---|\n| `next` | Next.js |\n| `nuxt` OR `nuxt3` | Nuxt |\n| `@angular\u002Fcore` | Angular |\n| `svelte` OR `@sveltejs\u002Fkit` | SvelteKit |\n| `react` (without next\u002Fnuxt) | React |\n| `vue` (without nuxt) | Vue |\n| `express` | Express |\n| `fastify` | Fastify |\n| `hono` | Hono |\n| `@nestjs\u002Fcore` | NestJS |\n\n**Python** — Check `pyproject.toml` or `requirements.txt` for: `fastapi`, `django`, `flask`.\n\n**Go** — Read `go.mod` for: `github.com\u002Fgin-gonic\u002Fgin` (Gin), `github.com\u002Flabstack\u002Fecho` (Echo), `github.com\u002Fgofiber\u002Ffiber` (Fiber).\n\nIf no framework detected, set to `null`.\n\n### 1.3 Package Manager (Node.js only)\n\n| Lock File | Package Manager |\n|---|---|\n| `pnpm-lock.yaml` | pnpm |\n| `yarn.lock` | yarn |\n| `bun.lockb` | bun |\n| `package-lock.json` | npm |\n\nDefault to `npm` if no lock file found. For non-Node.js, set to `null`.\n\n### 1.4 Test Runner\n\n**Node.js\u002FTypeScript** (first match wins):\n1. Glob for `vitest.config.*` or `vitest` in devDependencies -> `vitest`\n2. Glob for `jest.config.*` or `jest` in devDependencies -> `jest`\n3. `mocha` in devDependencies -> `mocha`\n\n**Python**: Check for `[tool.pytest]` in `pyproject.toml` or `pytest` in dependencies -> `pytest` (default for Python).\n\n**Go**: `go test` (built-in). **Rust**: `cargo test` (built-in). **Java\u002FMaven**: `mvn test`. **Java\u002FGradle**: `gradle test`.\n\n### 1.5 Linter\n\n| Marker | Linter |\n|---|---|\n| `.eslintrc*` OR `eslint.config.*` OR `eslint` in devDependencies | eslint |\n| `biome.json` OR `@biomejs\u002Fbiome` in devDependencies | biome |\n| `[tool.ruff]` in `pyproject.toml` OR `ruff.toml` | ruff |\n| `.golangci.yml` OR `.golangci.yaml` | golangci-lint |\n| `.clippy.toml` or clippy in Cargo.toml | clippy |\n\n### 1.6 Formatter\n\n| Marker | Formatter |\n|---|---|\n| `.prettierrc*` OR `prettier` in devDependencies | prettier |\n| `biome.json` (also formats) | biome |\n| `black` in Python deps | black |\n| `[tool.ruff.format]` in `pyproject.toml` | ruff format |\n| `rustfmt.toml` OR `.rustfmt.toml` | rustfmt |\n\nIf biome detected as both linter and formatter, report once as \"Biome (lint + format)\".\n\n### 1.7 Type Checker\n\n| Marker | Type Checker |\n|---|---|\n| `tsconfig.json` | tsc |\n| `mypy` in Python deps OR `[tool.mypy]` in `pyproject.toml` | mypy |\n| `pyright` in Python deps OR `pyrightconfig.json` | pyright |\n\nGo (`go vet`) and Rust (`cargo check`) have built-in type checking — note but do not list separately.\n\n### 1.8 CI Detection\n\n| Marker | CI System |\n|---|---|\n| `.github\u002Fworkflows\u002F*.yml` | GitHub Actions |\n| `.gitlab-ci.yml` | GitLab CI |\n| `Jenkinsfile` | Jenkins |\n| `.circleci\u002Fconfig.yml` | CircleCI |\n\n### 1.9 Git Hooks Detection\n\n| Marker | Hook System |\n|---|---|\n| `.husky\u002F` | Husky |\n| `.pre-commit-config.yaml` | pre-commit |\n| `.lefthook.yml` | Lefthook |\n\n### 1.10 Present Results\n\nAfter all detection, present findings:\n\n```\nI detected the following about your project:\n\n  Language:        {language}\n  Framework:       {framework or \"None detected\"}\n  Package manager: {package_manager or \"N\u002FA\"}\n  Test runner:     {test_runner or \"None detected\"}\n  Linter:          {linter or \"None detected\"}\n  Formatter:       {formatter or \"None detected\"}\n  Type checker:    {type_checker or \"None detected\"}\n  CI:              {ci or \"None detected\"}\n  Git hooks:       {git_hooks or \"None detected\"}\n```\n\n---\n\n## Phase 2: Interactive Questions\n\nUse AskUserQuestion to ask ONLY questions relevant based on detection. 3-5 questions maximum.\n\n**Always ask:**\n\n1. **Coverage threshold** — \"What test coverage threshold do you want to enforce?\" Options: \"100% (Recommended)\" \u002F \"80%\" \u002F \"60%\" \u002F \"Custom\"\n\n**Ask only if relevant:**\n\n2. **External AI tools** — Ask only for non-trivial projects: \"Set up external AI tools (Codex\u002FGemini) for cost savings on implementation?\" Options: \"Yes\" \u002F \"No\"\n\n3. **Visual review** — Ask only if a web framework was detected (Next.js, Nuxt, React, Vue, Angular, SvelteKit, Django, Flask): \"Enable visual screenshot review for UI changes?\" Options: \"Yes\" \u002F \"No\"\n\n4. **CI pipeline** — Ask only if NO CI detected: \"Create a GitHub Actions CI pipeline?\" Options: \"Yes (Recommended)\" \u002F \"No\"\n\n5. **Git hooks** — Ask only if NO hooks detected: \"Set up git hooks for pre-push quality checks?\" Options: \"Yes (Recommended)\" \u002F \"No\"\n\n---\n\n## Phase 3: Write Required Files\n\n### Step 1: Run the mandatory files script\n\nThis is the FIRST thing to do after Phase 2. Determine the coverage command, then run:\n\n```bash\nbash \"${CLAUDE_PLUGIN_ROOT}\u002Flib\u002Fsetup-mandatory-files.sh\" \"$(pwd)\" \u003Cthreshold> \"\u003Ccoverage-command>\"\n```\n\nExample for Python with pytest at 100%:\n```bash\nbash \"${CLAUDE_PLUGIN_ROOT}\u002Flib\u002Fsetup-mandatory-files.sh\" \"$(pwd)\" 100 \"pytest --cov --cov-fail-under=100\"\n```\n\nCheck the JSON output. If `\"status\": \"ok\"`, the 3 mandatory files are done. Report to the user what was created.\n\nIf the script fails or is not found, write the files manually (see CRITICAL-REQUIREMENTS above for what they are).\n\n### Step 2: Customize CLAUDE.md TODO sections\n\nIf CLAUDE.md was newly written (not appended), use Edit to replace the TODO placeholders:\n- Replace `npm test` \u002F `npm run test:coverage` with the detected test\u002Fcoverage commands\n- Replace `TypeScript strict mode` \u002F `ESLint + Prettier` with the detected language tools\n- Remove the `\u003C!-- TODO: ... -->` comment lines\n\nIf CLAUDE.md was appended to (existing file), this step is not needed.\n\n---\n\n### Step 3: Additional files\n\n#### Knowledge Base\n\nRead each file from `.\u002Fknowledge\u002F`:\n- `patterns.jsonl`, `gotchas.jsonl`, `decisions.jsonl`, `api-behaviors.jsonl`, `codebase-facts.jsonl`, `anti-patterns.jsonl`, `facts.jsonl`\n\nWrite them to `.beads\u002Fknowledge\u002F` in the project. Skip any that already exist.\n\n#### Shell Utilities\n\nRead each file from `.\u002Fbin\u002F`:\n- `estimate-cost.sh`, `external-tools-verify.sh`, `pr-comments-check.sh`, `pr-comments-filter.sh`\n\nWrite them to `bin\u002F` in the project. Make executable with `chmod +x`. Skip any that already exist.\n\n#### TypeScript Scripts\n\nRead each file from `.\u002Fscripts\u002F`:\n- `beads-self-reflect.ts`, `beads-fetch-pr-comments.ts`, `beads-fetch-conversation-history.ts`\n\nWrite them to `scripts\u002F` in the project. Skip any that already exist.\n\n**Node.js dependency warning**: If Node.js was NOT detected as the project language, print:\n> \"Note: scripts\u002F*.ts require Node.js (npx tsx) to run. Some advanced features (self-reflect, PR comment fetching) will work once Node.js is available. Core metaswarm functionality does not require Node.js.\"\n\n#### Conditional Files\n\n| Condition | Source | Destination |\n|---|---|---|\n| User chose YES for CI | `.\u002Ftemplates\u002Fci.yml` | `.github\u002Fworkflows\u002Fci.yml` |\n| User chose YES for git hooks AND Husky detected or Node.js project | `.\u002Ftemplates\u002Fpre-push` | `.husky\u002Fpre-push` (chmod +x) |\n| User chose YES for external tools | `.\u002Ftemplates\u002Fexternal-tools.yaml` | `.metaswarm\u002Fexternal-tools.yaml` |\n| Always | `.\u002Ftemplates\u002F.env.example` | `.env.example` |\n| Always | `.\u002Ftemplates\u002FSERVICE-INVENTORY.md` | `SERVICE-INVENTORY.md` |\n| Always | `.\u002Ftemplates\u002Fgitignore` | Merge into existing `.gitignore` (append missing entries, never duplicate) |\n\nFor `.gitignore`, read the existing file (if any), then append language-specific entries that are not already present. Always ensure `.env`, `.DS_Store`, and `*.log` are included.\n\n---\n\n## Phase 4: Profile Creation\n\nWrite `.metaswarm\u002Fproject-profile.json` with all detection results and user choices:\n\n```json\n{\n  \"metaswarm_version\": \"1.0.0\",\n  \"distribution\": \"plugin\",\n  \"installed_at\": \"{current ISO 8601 timestamp}\",\n  \"updated_at\": \"{current ISO 8601 timestamp}\",\n  \"detection\": {\n    \"language\": \"{detected language}\",\n    \"framework\": \"{detected framework or null}\",\n    \"test_runner\": \"{detected test runner}\",\n    \"linter\": \"{detected linter or null}\",\n    \"formatter\": \"{detected formatter or null}\",\n    \"package_manager\": \"{detected package manager or null}\",\n    \"type_checker\": \"{detected type checker or null}\",\n    \"ci\": \"{detected CI system or null}\",\n    \"git_hooks\": \"{detected hook system or null}\"\n  },\n  \"choices\": {\n    \"coverage_threshold\": 100,\n    \"external_tools\": false,\n    \"visual_review\": false,\n    \"ci_pipeline\": false,\n    \"git_hooks\": false\n  },\n  \"commands\": {\n    \"test\": \"{resolved test command}\",\n    \"coverage\": \"{resolved coverage command}\",\n    \"lint\": \"{resolved lint command or null}\",\n    \"typecheck\": \"{resolved typecheck command or null}\",\n    \"format_check\": \"{resolved format check command or null}\"\n  }\n}\n```\n\nFill all values from detection and user answers. Use `null` for anything not detected.\n\nCommand resolution reference:\n\n| Test Runner | Pkg Mgr | Test Command | Coverage Command |\n|---|---|---|---|\n| vitest | pnpm | `pnpm vitest run` | `pnpm vitest run --coverage` |\n| vitest | npm | `npx vitest run` | `npx vitest run --coverage` |\n| vitest | yarn | `yarn vitest run` | `yarn vitest run --coverage` |\n| jest | pnpm | `pnpm jest` | `pnpm jest --coverage` |\n| jest | npm | `npx jest` | `npx jest --coverage` |\n| jest | yarn | `yarn jest` | `yarn jest --coverage` |\n| mocha | any | `npx mocha` | `npx nyc mocha` |\n| pytest | -- | `pytest` | `pytest --cov --cov-fail-under={threshold}` |\n| go test | -- | `go test .\u002F...` | `go test -coverprofile=coverage.out .\u002F...` |\n| cargo test | -- | `cargo test` | `cargo tarpaulin --fail-under {threshold}` |\n| mvn test | -- | `mvn test` | `mvn test jacoco:report` |\n| gradle test | -- | `gradle test` | `gradle test jacocoTestReport` |\n\n---\n\n## Phase 5: Post-Setup Actions\n\n### 5.1 External Tools (if enabled)\n\n1. Check if Codex and Gemini CLIs are installed via Bash (`command -v codex`, `command -v gemini`)\n2. For tools not installed, tell the user how to install them\n3. For installed tools, verify with `--version`\n4. Update `.metaswarm\u002Fexternal-tools.yaml` — set `enabled: true` for installed tools, `enabled: false` for missing ones\n\n### 5.2 Visual Review (if enabled)\n\n1. Run `npx playwright install chromium` via Bash\n2. Report success or failure\n\n### 5.3 Git Hooks (if enabled)\n\n**Node.js\u002FTypeScript**: Install Husky if not present, run `npx husky init`, write pre-push hook.\n**Python**: Suggest `pip install pre-commit` and offer to create `.pre-commit-config.yaml`.\n**Other**: Suggest appropriate hook tools for the ecosystem.\n\n---\n\n## Phase 6: Summary\n\nPresent a final summary:\n\n```\nSetup complete! Here's what was configured:\n\n  Project:         {name}\n  Language:        {language}\n  Framework:       {framework or \"None\"}\n  Test runner:     {test_runner} -> `{test command}`\n  Coverage:        {threshold}% -> `{coverage command}`\n  Linter:          {linter or \"None\"}\n  Formatter:       {formatter or \"None\"}\n  CI:              {ci or \"None\"}\n  Git hooks:       {hooks or \"None\"}\n  External tools:  {Enabled\u002FDisabled}\n  Visual review:   {Enabled\u002FDisabled}\n\nMandatory files:\n  ✔ CLAUDE.md          — {written new \u002F appended metaswarm section \u002F already had it}\n  ✔ .coverage-thresholds.json — {threshold}% coverage, enforcement: `{command}`\n  ✔ .claude\u002Fcommands\u002F   — 6 shims: start-task, prime, review-design, self-reflect, pr-shepherd, brainstorm\n\nOther files written:\n  {list every other file written or modified with its path}\n\nYou're all set! Run \u002Fstart-task to begin working.\n```\n\n**Command naming**: When recommending commands to the user, always use the short shim names (`\u002Fstart-task`, `\u002Fprime`, `\u002Fbrainstorm`, etc.), NOT the namespaced plugin names (`\u002Fmetaswarm:start-task`). The shims you just created in `.claude\u002Fcommands\u002F` make the short names work. The short names are easier to type and remember.\n\nOffer 1-2 relevant tips based on configuration:\n- If external tools enabled: \"Use `\u002Fexternal-tools-health` to check tool status.\"\n- If no CI set up: \"Consider adding CI later -- metaswarm includes a template at `.\u002Ftemplates\u002Fci.yml`.\"\n- If visual review enabled: \"The visual review skill will screenshot your app during development.\"\n\n---\n\n## Missing Setup Auto-Detection\n\nIf `\u002Fstart-task` is invoked and `.metaswarm\u002Fproject-profile.json` does not exist, the start skill should auto-route here. This skill will run the full setup flow, then hand back to `\u002Fstart-task` to continue with the user's original request.\n\n---\n\n## Error Handling\n\n- If any Bash command fails, report the error and offer to skip that step or retry.\n- If a file cannot be read, note it and continue with other detection.\n- If AskUserQuestion is dismissed, use defaults: 100% coverage, no external tools, no visual review.\n- Never leave the project half-configured. The pre-flight check allows re-running setup to completion.\n- All template paths are hardcoded in this skill. Never construct file paths from user-provided input.\n\n---\n\n## Final Verification (run this before declaring setup complete)\n\nBefore saying \"setup complete\", run this Bash command to verify the 3 mandatory files:\n\n```bash\necho \"CLAUDE.md:\"; grep -c \"metaswarm\" CLAUDE.md 2>\u002Fdev\u002Fnull || echo \"MISSING\"; echo \"coverage:\"; ls .coverage-thresholds.json 2>\u002Fdev\u002Fnull || echo \"MISSING\"; echo \"shims:\"; ls .claude\u002Fcommands\u002Fstart-task.md .claude\u002Fcommands\u002Fprime.md .claude\u002Fcommands\u002Fbrainstorm.md 2>\u002Fdev\u002Fnull || echo \"MISSING\"\n```\n\nIf any output says \"MISSING\", go back and run the setup-mandatory-files.sh script or create the files manually. Do NOT declare success with missing files.\n\nWhen reporting available commands to the user, use the **short names** (`\u002Fstart-task`, `\u002Fprime`, `\u002Fbrainstorm`, etc.) — NOT the namespaced names (`\u002Fmetaswarm:start-task`). The command shims make the short names work. Do NOT recommend commands that don't exist (e.g., `\u002Fmetaswarm:start`, `\u002Fmetaswarm:status`, `\u002Fmetaswarm:architect-agent`).\n","# Setup\n\nInteractive, Claude-guided setup for metaswarm. Detects your stack, asks targeted questions, writes project-local files, and creates command shims. Replaces both `npx metaswarm init` and the old `\u002Fmetaswarm-setup` command.\n\n\u003CCRITICAL-REQUIREMENTS>\nSetup MUST produce these 3 mandatory outputs. A shell script handles them automatically — you MUST run it.\n\nAfter Phase 2 (user questions), determine the correct coverage command from the detection results, then run this Bash command:\n\n```bash\nbash \"${CLAUDE_PLUGIN_ROOT}\u002Flib\u002Fsetup-mandatory-files.sh\" \"$(pwd)\" \u003Cthreshold> \"\u003Ccoverage-command>\"\n```\n\nWhere:\n- `\u003Cthreshold>` is the user's chosen percentage (e.g., `100`)\n- `\u003Ccoverage-command>` is the enforcement command for their test runner:\n  - pytest → `\"pytest --cov --cov-fail-under=\u003Cthreshold>\"`\n  - vitest\u002Fpnpm → `\"pnpm vitest run --coverage\"`\n  - jest\u002Fnpm → `\"npx jest --coverage\"`\n  - go → `\"go test -coverprofile=coverage.out .\u002F...\"`\n  - cargo → `\"cargo tarpaulin --fail-under \u003Cthreshold>\"`\n\nThe script handles:\n1. **CLAUDE.md** — appends metaswarm section (or writes new), skips if already present\n2. **`.coverage-thresholds.json`** — writes at project root with correct thresholds and command\n3. **6 shims in `.claude\u002Fcommands\u002F`** — writes `start-task.md`, `prime.md`, `review-design.md`, `self-reflect.md`, `pr-shepherd.md`, `brainstorm.md`\n\nThe script outputs JSON with what was created\u002Fskipped\u002Ferrored. Check that `\"status\": \"ok\"`.\n\n**If the script is not available or fails**, fall back to writing these files manually with the Write tool. Do NOT skip them.\n\u003C\u002FCRITICAL-REQUIREMENTS>\n\n## Pre-Flight\n\n### Existing Profile Check\n\nUse Glob to check if `.metaswarm\u002Fproject-profile.json` exists.\n\n- **If it exists**: Read it, present the current configuration summary, and ask the user via AskUserQuestion: \"You already have a metaswarm project profile. Re-run setup (overwrites choices) or skip?\" Options: \"Re-run setup\" \u002F \"Skip\". If the user skips, stop with: \"Setup skipped. Existing configuration unchanged.\"\n- **If it does not exist**: Continue to Project Detection.\n\n---\n\n## Phase 1: Project Detection\n\nScan the project directory silently using Glob and Read. Do NOT ask the user for any of this information. Detect everything, then present results.\n\n### 1.1 Language\n\nCheck for marker files at the project root:\n\n| Marker File | Language |\n|---|---|\n| `package.json` | Node.js \u002F JavaScript |\n| `tsconfig.json` | TypeScript (refines Node.js to TypeScript) |\n| `pyproject.toml` OR `setup.py` OR `requirements.txt` | Python |\n| `go.mod` | Go |\n| `Cargo.toml` | Rust |\n| `pom.xml` OR `build.gradle` OR `build.gradle.kts` | Java |\n| `Gemfile` | Ruby |\n| `Makefile` (alone, no other markers) | Unknown (ask user) |\n\nIf `tsconfig.json` exists alongside `package.json`, the language is \"TypeScript\".\n\nIf multiple languages are detected, note all of them but use the primary one (most infrastructure) for command generation.\n\n**If no language detected**: Use AskUserQuestion to ask the user what language\u002Fstack they are using before proceeding.\n\n### 1.2 Framework\n\n**Node.js\u002FTypeScript** — Read `package.json` and check `dependencies` + `devDependencies`:\n\n| Dependency | Framework |\n|---|---|\n| `next` | Next.js |\n| `nuxt` OR `nuxt3` | Nuxt |\n| `@angular\u002Fcore` | Angular |\n| `svelte` OR `@sveltejs\u002Fkit` | SvelteKit |\n| `react` (without next\u002Fnuxt) | React |\n| `vue` (without nuxt) | Vue |\n| `express` | Express |\n| `fastify` | Fastify |\n| `hono` | Hono |\n| `@nestjs\u002Fcore` | NestJS |\n\n**Python** — Check `pyproject.toml` or `requirements.txt` for: `fastapi`, `django`, `flask`.\n\n**Go** — Read `go.mod` for: `github.com\u002Fgin-gonic\u002Fgin` (Gin), `github.com\u002Flabstack\u002Fecho` (Echo), `github.com\u002Fgofiber\u002Ffiber` (Fiber).\n\nIf no framework detected, set to `null`.\n\n### 1.3 Package Manager (Node.js only)\n\n| Lock File | Package Manager |\n|---|---|\n| `pnpm-lock.yaml` | pnpm |\n| `yarn.lock` | yarn |\n| `bun.lockb` | bun |\n| `package-lock.json` | npm |\n\nDefault to `npm` if no lock file found. For non-Node.js, set to `null`.\n\n### 1.4 Test Runner\n\n**Node.js\u002FTypeScript** (first match wins):\n1. Glob for `vitest.config.*` or `vitest` in devDependencies -> `vitest`\n2. Glob for `jest.config.*` or `jest` in devDependencies -> `jest`\n3. `mocha` in devDependencies -> `mocha`\n\n**Python**: Check for `[tool.pytest]` in `pyproject.toml` or `pytest` in dependencies -> `pytest` (default for Python).\n\n**Go**: `go test` (built-in). **Rust**: `cargo test` (built-in). **Java\u002FMaven**: `mvn test`. **Java\u002FGradle**: `gradle test`.\n\n### 1.5 Linter\n\n| Marker | Linter |\n|---|---|\n| `.eslintrc*` OR `eslint.config.*` OR `eslint` in devDependencies | eslint |\n| `biome.json` OR `@biomejs\u002Fbiome` in devDependencies | biome |\n| `[tool.ruff]` in `pyproject.toml` OR `ruff.toml` | ruff |\n| `.golangci.yml` OR `.golangci.yaml` | golangci-lint |\n| `.clippy.toml` or clippy in Cargo.toml | clippy |\n\n### 1.6 Formatter\n\n| Marker | Formatter |\n|---|---|\n| `.prettierrc*` OR `prettier` in devDependencies | prettier |\n| `biome.json` (also formats) | biome |\n| `black` in Python deps | black |\n| `[tool.ruff.format]` in `pyproject.toml` | ruff format |\n| `rustfmt.toml` OR `.rustfmt.toml` | rustfmt |\n\nIf biome detected as both linter and formatter, report once as \"Biome (lint + format)\".\n\n### 1.7 Type Checker\n\n| Marker | Type Checker |\n|---|---|\n| `tsconfig.json` | tsc |\n| `mypy` in Python deps OR `[tool.mypy]` in `pyproject.toml` | mypy |\n| `pyright` in Python deps OR `pyrightconfig.json` | pyright |\n\nGo (`go vet`) and Rust (`cargo check`) have built-in type checking — note but do not list separately.\n\n### 1.8 CI Detection\n\n| Marker | CI System |\n|---|---|\n| `.github\u002Fworkflows\u002F*.yml` | GitHub Actions |\n| `.gitlab-ci.yml` | GitLab CI |\n| `Jenkinsfile` | Jenkins |\n| `.circleci\u002Fconfig.yml` | CircleCI |\n\n### 1.9 Git Hooks Detection\n\n| Marker | Hook System |\n|---|---|\n| `.husky\u002F` | Husky |\n| `.pre-commit-config.yaml` | pre-commit |\n| `.lefthook.yml` | Lefthook |\n\n### 1.10 Present Results\n\nAfter all detection, present findings:\n\n```\nI detected the following about your project:\n\n  Language:        {language}\n  Framework:       {framework or \"None detected\"}\n  Package manager: {package_manager or \"N\u002FA\"}\n  Test runner:     {test_runner or \"None detected\"}\n  Linter:          {linter or \"None detected\"}\n  Formatter:       {formatter or \"None detected\"}\n  Type checker:    {type_checker or \"None detected\"}\n  CI:              {ci or \"None detected\"}\n  Git hooks:       {git_hooks or \"None detected\"}\n```\n\n---\n\n## Phase 2: Interactive Questions\n\nUse AskUserQuestion to ask ONLY questions relevant based on detection. 3-5 questions maximum.\n\n**Always ask:**\n\n1. **Coverage threshold** — \"What test coverage threshold do you want to enforce?\" Options: \"100% (Recommended)\" \u002F \"80%\" \u002F \"60%\" \u002F \"Custom\"\n\n**Ask only if relevant:**\n\n2. **External AI tools** — Ask only for non-trivial projects: \"Set up external AI tools (Codex\u002FGemini) for cost savings on implementation?\" Options: \"Yes\" \u002F \"No\"\n\n3. **Visual review** — Ask only if a web framework was detected (Next.js, Nuxt, React, Vue, Angular, SvelteKit, Django, Flask): \"Enable visual screenshot review for UI changes?\" Options: \"Yes\" \u002F \"No\"\n\n4. **CI pipeline** — Ask only if NO CI detected: \"Create a GitHub Actions CI pipeline?\" Options: \"Yes (Recommended)\" \u002F \"No\"\n\n5. **Git hooks** — Ask only if NO hooks detected: \"Set up git hooks for pre-push quality checks?\" Options: \"Yes (Recommended)\" \u002F \"No\"\n\n---\n\n## Phase 3: Write Required Files\n\n### Step 1: Run the mandatory files script\n\nThis is the FIRST thing to do after Phase 2. Determine the coverage command, then run:\n\n```bash\nbash \"${CLAUDE_PLUGIN_ROOT}\u002Flib\u002Fsetup-mandatory-files.sh\" \"$(pwd)\" \u003Cthreshold> \"\u003Ccoverage-command>\"\n```\n\nExample for Python with pytest at 100%:\n```bash\nbash \"${CLAUDE_PLUGIN_ROOT}\u002Flib\u002Fsetup-mandatory-files.sh\" \"$(pwd)\" 100 \"pytest --cov --cov-fail-under=100\"\n```\n\nCheck the JSON output. If `\"status\": \"ok\"`, the 3 mandatory files are done. Report to the user what was created.\n\nIf the script fails or is not found, write the files manually (see CRITICAL-REQUIREMENTS above for what they are).\n\n### Step 2: Customize CLAUDE.md TODO sections\n\nIf CLAUDE.md was newly written (not appended), use Edit to replace the TODO placeholders:\n- Replace `npm test` \u002F `npm run test:coverage` with the detected test\u002Fcoverage commands\n- Replace `TypeScript strict mode` \u002F `ESLint + Prettier` with the detected language tools\n- Remove the `\u003C!-- TODO: ... -->` comment lines\n\nIf CLAUDE.md was appended to (existing file), this step is not needed.\n\n---\n\n### Step 3: Additional files\n\n#### Knowledge Base\n\nRead each file from `.\u002Fknowledge\u002F`:\n- `patterns.jsonl`, `gotchas.jsonl`, `decisions.jsonl`, `api-behaviors.jsonl`, `codebase-facts.jsonl`, `anti-patterns.jsonl`, `facts.jsonl`\n\nWrite them to `.beads\u002Fknowledge\u002F` in the project. Skip any that already exist.\n\n#### Shell Utilities\n\nRead each file from `.\u002Fbin\u002F`:\n- `estimate-cost.sh`, `external-tools-verify.sh`, `pr-comments-check.sh`, `pr-comments-filter.sh`\n\nWrite them to `bin\u002F` in the project. Make executable with `chmod +x`. Skip any that already exist.\n\n#### TypeScript Scripts\n\nRead each file from `.\u002Fscripts\u002F`:\n- `beads-self-reflect.ts`, `beads-fetch-pr-comments.ts`, `beads-fetch-conversation-history.ts`\n\nWrite them to `scripts\u002F` in the project. Skip any that already exist.\n\n**Node.js dependency warning**: If Node.js was NOT detected as the project language, print:\n> \"Note: scripts\u002F*.ts require Node.js (npx tsx) to run. Some advanced features (self-reflect, PR comment fetching) will work once Node.js is available. Core metaswarm functionality does not require Node.js.\"\n\n#### Conditional Files\n\n| Condition | Source | Destination |\n|---|---|---|\n| User chose YES for CI | `.\u002Ftemplates\u002Fci.yml` | `.github\u002Fworkflows\u002Fci.yml` |\n| User chose YES for git hooks AND Husky detected or Node.js project | `.\u002Ftemplates\u002Fpre-push` | `.husky\u002Fpre-push` (chmod +x) |\n| User chose YES for external tools | `.\u002Ftemplates\u002Fexternal-tools.yaml` | `.metaswarm\u002Fexternal-tools.yaml` |\n| Always | `.\u002Ftemplates\u002F.env.example` | `.env.example` |\n| Always | `.\u002Ftemplates\u002FSERVICE-INVENTORY.md` | `SERVICE-INVENTORY.md` |\n| Always | `.\u002Ftemplates\u002Fgitignore` | Merge into existing `.gitignore` (append missing entries, never duplicate) |\n\nFor `.gitignore`, read the existing file (if any), then append language-specific entries that are not already present. Always ensure `.env`, `.DS_Store`, and `*.log` are included.\n\n---\n\n## Phase 4: Profile Creation\n\nWrite `.metaswarm\u002Fproject-profile.json` with all detection results and user choices:\n\n```json\n{\n  \"metaswarm_version\": \"1.0.0\",\n  \"distribution\": \"plugin\",\n  \"installed_at\": \"{current ISO 8601 timestamp}\",\n  \"updated_at\": \"{current ISO 8601 timestamp}\",\n  \"detection\": {\n    \"language\": \"{detected language}\",\n    \"framework\": \"{detected framework or null}\",\n    \"test_runner\": \"{detected test runner}\",\n    \"linter\": \"{detected linter or null}\",\n    \"formatter\": \"{detected formatter or null}\",\n    \"package_manager\": \"{detected package manager or null}\",\n    \"type_checker\": \"{detected type checker or null}\",\n    \"ci\": \"{detected CI system or null}\",\n    \"git_hooks\": \"{detected hook system or null}\"\n  },\n  \"choices\": {\n    \"coverage_threshold\": 100,\n    \"external_tools\": false,\n    \"visual_review\": false,\n    \"ci_pipeline\": false,\n    \"git_hooks\": false\n  },\n  \"commands\": {\n    \"test\": \"{resolved test command}\",\n    \"coverage\": \"{resolved coverage command}\",\n    \"lint\": \"{resolved lint command or null}\",\n    \"typecheck\": \"{resolved typecheck command or null}\",\n    \"format_check\": \"{resolved format check command or null}\"\n  }\n}\n```\n\nFill all values from detection and user answers. Use `null` for anything not detected.\n\nCommand resolution reference:\n\n| Test Runner | Pkg Mgr | Test Command | Coverage Command |\n|---|---|---|---|\n| vitest | pnpm | `pnpm vitest run` | `pnpm vitest run --coverage` |\n| vitest | npm | `npx vitest run` | `npx vitest run --coverage` |\n| vitest | yarn | `yarn vitest run` | `yarn vitest run --coverage` |\n| jest | pnpm | `pnpm jest` | `pnpm jest --coverage` |\n| jest | npm | `npx jest` | `npx jest --coverage` |\n| jest | yarn | `yarn jest` | `yarn jest --coverage` |\n| mocha | any | `npx mocha` | `npx nyc mocha` |\n| pytest | -- | `pytest` | `pytest --cov --cov-fail-under={threshold}` |\n| go test | -- | `go test .\u002F...` | `go test -coverprofile=coverage.out .\u002F...` |\n| cargo test | -- | `cargo test` | `cargo tarpaulin --fail-under {threshold}` |\n| mvn test | -- | `mvn test` | `mvn test jacoco:report` |\n| gradle test | -- | `gradle test` | `gradle test jacocoTestReport` |\n\n---\n\n## Phase 5: Post-Setup Actions\n\n### 5.1 External Tools (if enabled)\n\n1. Check if Codex and Gemini CLIs are installed via Bash (`command -v codex`, `command -v gemini`)\n2. For tools not installed, tell the user how to install them\n3. For installed tools, verify with `--version`\n4. Update `.metaswarm\u002Fexternal-tools.yaml` — set `enabled: true` for installed tools, `enabled: false` for missing ones\n\n### 5.2 Visual Review (if enabled)\n\n1. Run `npx playwright install chromium` via Bash\n2. Report success or failure\n\n### 5.3 Git Hooks (if enabled)\n\n**Node.js\u002FTypeScript**: Install Husky if not present, run `npx husky init`, write pre-push hook.\n**Python**: Suggest `pip install pre-commit` and offer to create `.pre-commit-config.yaml`.\n**Other**: Suggest appropriate hook tools for the ecosystem.\n\n---\n\n## Phase 6: Summary\n\nPresent a final summary:\n\n```\nSetup complete! Here's what was configured:\n\n  Project:         {name}\n  Language:        {language}\n  Framework:       {framework or \"None\"}\n  Test runner:     {test_runner} -> `{test command}`\n  Coverage:        {threshold}% -> `{coverage command}`\n  Linter:          {linter or \"None\"}\n  Formatter:       {formatter or \"None\"}\n  CI:              {ci or \"None\"}\n  Git hooks:       {hooks or \"None\"}\n  External tools:  {Enabled\u002FDisabled}\n  Visual review:   {Enabled\u002FDisabled}\n\nMandatory files:\n  ✔ CLAUDE.md          — {written new \u002F appended metaswarm section \u002F already had it}\n  ✔ .coverage-thresholds.json — {threshold}% coverage, enforcement: `{command}`\n  ✔ .claude\u002Fcommands\u002F   — 6 shims: start-task, prime, review-design, self-reflect, pr-shepherd, brainstorm\n\nOther files written:\n  {list every other file written or modified with its path}\n\nYou're all set! Run \u002Fstart-task to begin working.\n```\n\n**Command naming**: When recommending commands to the user, always use the short shim names (`\u002Fstart-task`, `\u002Fprime`, `\u002Fbrainstorm`, etc.), NOT the namespaced plugin names (`\u002Fmetaswarm:start-task`). The shims you just created in `.claude\u002Fcommands\u002F` make the short names work. The short names are easier to type and remember.\n\nOffer 1-2 relevant tips based on configuration:\n- If external tools enabled: \"Use `\u002Fexternal-tools-health` to check tool status.\"\n- If no CI set up: \"Consider adding CI later -- metaswarm includes a template at `.\u002Ftemplates\u002Fci.yml`.\"\n- If visual review enabled: \"The visual review skill will screenshot your app during development.\"\n\n---\n\n## Missing Setup Auto-Detection\n\nIf `\u002Fstart-task` is invoked and `.metaswarm\u002Fproject-profile.json` does not exist, the start skill should auto-route here. This skill will run the full setup flow, then hand back to `\u002Fstart-task` to continue with the user's original request.\n\n---\n\n## Error Handling\n\n- If any Bash command fails, report the error and offer to skip that step or retry.\n- If a file cannot be read, note it and continue with other detection.\n- If AskUserQuestion is dismissed, use defaults: 100% coverage, no external tools, no visual review.\n- Never leave the project half-configured. The pre-flight check allows re-running setup to completion.\n- All template paths are hardcoded in this skill. Never construct file paths from user-provided input.\n\n---\n\n## Final Verification (run this before declaring setup complete)\n\nBefore saying \"setup complete\", run this Bash command to verify the 3 mandatory files:\n\n```bash\necho \"CLAUDE.md:\"; grep -c \"metaswarm\" CLAUDE.md 2>\u002Fdev\u002Fnull || echo \"MISSING\"; echo \"coverage:\"; ls .coverage-thresholds.json 2>\u002Fdev\u002Fnull || echo \"MISSING\"; echo \"shims:\"; ls .claude\u002Fcommands\u002Fstart-task.md .claude\u002Fcommands\u002Fprime.md .claude\u002Fcommands\u002Fbrainstorm.md 2>\u002Fdev\u002Fnull || echo \"MISSING\"\n```\n\nIf any output says \"MISSING\", go back and run the setup-mandatory-files.sh script or create the files manually. Do NOT declare success with missing files.\n\nWhen reporting available commands to the user, use the **short names** (`\u002Fstart-task`, `\u002Fprime`, `\u002Fbrainstorm`, etc.) — NOT the namespaced names (`\u002Fmetaswarm:start-task`). The command shims make the short names work. Do NOT recommend commands that don't exist (e.g., `\u002Fmetaswarm:start`, `\u002Fmetaswarm:status`, `\u002Fmetaswarm:architect-agent`).\n",{"name":5,"description":7},"main","a298c929b6cbd662e1fce54302ce520d5ceea1a5","tools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain","https:\u002F\u002Fgithub.com\u002FPrekzursil","2026-11-02 14:30:57",{"source":8,"skillName":5,"commands":36,"prompt":46,"zipAvailable":47},[37,40,43],{"tool":38,"command":39},"npx","npx skills add Prekzursil\u002Fagent-skills-toolchain --skill setup",{"tool":41,"command":42},"bunx","bunx skills add Prekzursil\u002Fagent-skills-toolchain --skill setup",{"tool":44,"command":45},"pnpm","pnpm dlx skills add Prekzursil\u002Fagent-skills-toolchain --skill setup","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002FSKILL.md",true,[49,55,59,63,67,73,77,81,85,89,93,97,103,107,111,115,119,123,127,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198],{"path":50,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":53,"sourceHtmlUrl":54},"bin\u002Festimate-cost.sh","SCRIPT","脚本",1800,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Fbin\u002Festimate-cost.sh",{"path":56,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":57,"sourceHtmlUrl":58},"bin\u002Fexternal-tools-verify.sh",5612,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Fbin\u002Fexternal-tools-verify.sh",{"path":60,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":61,"sourceHtmlUrl":62},"bin\u002Fpr-comments-check.sh",2807,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Fbin\u002Fpr-comments-check.sh",{"path":64,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":65,"sourceHtmlUrl":66},"bin\u002Fpr-comments-filter.sh",6750,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Fbin\u002Fpr-comments-filter.sh",{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"knowledge\u002Fanti-patterns.jsonl","OTHER","其他",840,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Fknowledge\u002Fanti-patterns.jsonl",{"path":74,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":75,"sourceHtmlUrl":76},"knowledge\u002Fapi-behaviors.jsonl",834,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Fknowledge\u002Fapi-behaviors.jsonl",{"path":78,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":79,"sourceHtmlUrl":80},"knowledge\u002Fcodebase-facts.jsonl",899,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Fknowledge\u002Fcodebase-facts.jsonl",{"path":82,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":83,"sourceHtmlUrl":84},"knowledge\u002Fdecisions.jsonl",919,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Fknowledge\u002Fdecisions.jsonl",{"path":86,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":87,"sourceHtmlUrl":88},"knowledge\u002Ffacts.jsonl",866,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Fknowledge\u002Ffacts.jsonl",{"path":90,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":91,"sourceHtmlUrl":92},"knowledge\u002Fgotchas.jsonl",888,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Fknowledge\u002Fgotchas.jsonl",{"path":94,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":95,"sourceHtmlUrl":96},"knowledge\u002Fpatterns.jsonl",893,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Fknowledge\u002Fpatterns.jsonl",{"path":98,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":101,"sourceHtmlUrl":102},"knowledge\u002FREADME.md","REFERENCE","参考文档",3903,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Fknowledge\u002FREADME.md",{"path":104,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":105,"sourceHtmlUrl":106},"scripts\u002Fbeads-fetch-conversation-history.ts",12900,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Fscripts\u002Fbeads-fetch-conversation-history.ts",{"path":108,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":109,"sourceHtmlUrl":110},"scripts\u002Fbeads-fetch-pr-comments.ts",9704,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Fscripts\u002Fbeads-fetch-pr-comments.ts",{"path":112,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":113,"sourceHtmlUrl":114},"scripts\u002Fbeads-self-reflect.ts",7230,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Fscripts\u002Fbeads-self-reflect.ts",{"path":116,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":117,"sourceHtmlUrl":118},"templates\u002F.env.example",249,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002F.env.example",{"path":120,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":121,"sourceHtmlUrl":122},"templates\u002FAGENTS-append.md",2262,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002FAGENTS-append.md",{"path":124,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":125,"sourceHtmlUrl":126},"templates\u002FAGENTS.md",4927,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002FAGENTS.md",{"path":128,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":121,"sourceHtmlUrl":129},"templates\u002Fbeads-config.yaml","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002Fbeads-config.yaml",{"path":131,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":132,"sourceHtmlUrl":133},"templates\u002Fbeads-developer-setup.md",8117,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002Fbeads-developer-setup.md",{"path":135,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":136,"sourceHtmlUrl":137},"templates\u002Fbeads-readme.md",2236,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002Fbeads-readme.md",{"path":139,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":140,"sourceHtmlUrl":141},"templates\u002Fci-coverage-job.yml",4191,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002Fci-coverage-job.yml",{"path":143,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":144,"sourceHtmlUrl":145},"templates\u002Fci.yml",1686,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002Fci.yml",{"path":147,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":148,"sourceHtmlUrl":149},"templates\u002FCLAUDE-append.md",3784,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002FCLAUDE-append.md",{"path":151,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":152,"sourceHtmlUrl":153},"templates\u002FCLAUDE.md",11878,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002FCLAUDE.md",{"path":155,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":156,"sourceHtmlUrl":157},"templates\u002Fcoverage-thresholds.json",607,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002Fcoverage-thresholds.json",{"path":159,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":160,"sourceHtmlUrl":161},"templates\u002Fexternal-tools-setup.md",10060,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002Fexternal-tools-setup.md",{"path":163,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":164,"sourceHtmlUrl":165},"templates\u002Fexternal-tools.yaml",1302,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002Fexternal-tools.yaml",{"path":167,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":168,"sourceHtmlUrl":169},"templates\u002FGEMINI-append.md",2456,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002FGEMINI-append.md",{"path":171,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":172,"sourceHtmlUrl":173},"templates\u002FGEMINI.md",5257,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002FGEMINI.md",{"path":175,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":176,"sourceHtmlUrl":177},"templates\u002Fgitignore",294,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002Fgitignore",{"path":179,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":180,"sourceHtmlUrl":181},"templates\u002Fgtg-workflow.yml",2370,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002Fgtg-workflow.yml",{"path":183,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":184,"sourceHtmlUrl":185},"templates\u002Fpre-push",1910,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002Fpre-push",{"path":187,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":188,"sourceHtmlUrl":189},"templates\u002FSERVICE-INVENTORY.md",1346,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002FSERVICE-INVENTORY.md",{"path":191,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":192,"sourceHtmlUrl":193},"templates\u002Ftask-completion-checklist.md",7115,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002Ftask-completion-checklist.md",{"path":195,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":196,"sourceHtmlUrl":197},"templates\u002Ftodo-management.md",3750,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002Ftodo-management.md",{"path":199,"resourceType":99,"resourceTypeDesc":100,"sizeBytes":200,"sourceHtmlUrl":201},"templates\u002FUI-FLOWS.md",1925,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002Ftemplates\u002FUI-FLOWS.md",[203,225,255,282,293,309],{"skillNo":204,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":209,"publishedAt":24},"01M6DF7D7478R55P46REYH4QAC","clarify-requirements","Resolve genuine pre-execution ambiguity by scanning repo context, generating 1-6 grounded options, and asking 1-3 focused questions via AskUserQuestion. NOT for mid-task use (injection risk); NOT when the goal is already unambiguous; use to disambiguate vague prompts before any file edits.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fworkspace-hooks\u002Fskills\u002Fclarify-requirements\u002FSKILL.md",[],[210,211,212,213,214,215,216,217,218,219,220,221,222,223,224],"clarify requirements","clarify","requirements","prompts","options","file","execution","injection","risk","repo","context","use","scanning","goal","task",{"skillNo":226,"name":227,"nameZh":6,"description":228,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":229,"categories":230,"keywords":236,"publishedAt":24},"01M6DF79CA4BHJS66J8EZDBPWJ","openmm-md","Run FREE, open-source, Windows-native GPU molecular dynamics via the openmm-md MCP (OpenMM + CUDA on the local NVIDIA GPU). Use for protein \u002F protein-ligand MD when you want a free stack or are on Windows without a Schrodinger license. Covers the full workflow (prepare, solvate, minimize, equilibrate, production, analyze, mmgbsa) AND an honest decision guide vs Schrodinger Desmond, including how to run Desmond legitimately on Linux or a cloud GPU with a real license. This is a deliberately LESSER free alternative and does NOT replace the schrodinger MCP tools. Do NOT use it to pick a free tool when a validated FEP+, WaterMap, IFD-MD, or Prime MM-GBSA result is actually required.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fmcp\u002Fopenmm-md-mcp\u002Fskill\u002Fopenmm-md\u002FSKILL.md",[231],{"categoryNo":232,"categoryName":233,"taxonomyType":234,"taxonomyTypeDesc":235},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,221,22,252,253,254],"openmm md","NVIDIA","decision","pick","analyze","tool","stack","how","open","do","gpu","license","windows","workflow","linux","molecular dynamics","free","MCP",{"skillNo":256,"name":257,"nameZh":6,"description":258,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":259,"categories":260,"keywords":267,"publishedAt":24},"01M6DF76C1MG85VEWP8VZCBNMN","visual-review","Take screenshots of web pages and UI using Playwright for visual review and iteration","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fvisual-review\u002FSKILL.md",[261,264],{"categoryNo":262,"categoryName":263,"taxonomyType":234,"taxonomyTypeDesc":235},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":265,"categoryName":266,"taxonomyType":234,"taxonomyTypeDesc":235},"01JBSEEDCAT000000000000008","测试与质量",[268,269,270,271,272,273,274,275,276,277,244,278,279,280,281],"visual review","visual","review","iteration","screenshot","false","pages","take","check","slides","ui","web","playwright","screenshots",{"skillNo":283,"name":284,"nameZh":6,"description":285,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":286,"categories":287,"keywords":288,"publishedAt":24},"01M6DF73AQVCBZKEN0YXEX9FXP","status","Diagnostic status report — shows metaswarm installation state, project setup, and potential issues","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstatus\u002FSKILL.md",[],[284,289,5,290,23,291,20,292],"report","state","installation","issues",{"skillNo":294,"name":295,"nameZh":6,"description":296,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":297,"categories":298,"keywords":300,"publishedAt":24},"01M6DF6X6C2XB0P6GX76P7TTYV","start","Use when starting work on any task, when the user mentions metaswarm, or when the user wants to begin tracked development work","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstart\u002FSKILL.md",[299],{"categoryNo":232,"categoryName":233,"taxonomyType":234,"taxonomyTypeDesc":235},[295,301,224,302,303,304,221,305,306,307,308],"work","issue","ready","work on issue","user","start issue","work on","development",{"skillNo":310,"name":311,"nameZh":6,"description":312,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":313,"categories":314,"keywords":315,"publishedAt":24},"01M6DF6M1P5KAJ13YQJ28T7XDE","pr-shepherd","Monitor a PR through to merge — handle CI failures, review comments, and thread resolution automatically until all checks pass","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fpr-shepherd\u002FSKILL.md",[],[316,317,318,319,320,321,322,270],"pr","shepherd","pr shepherd","resolution","ci","monitor","merge"]