[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"extension-plugin-luiseiman-tdd-en":3,"guides-for-luiseiman-tdd":758,"similar-k1706nwc7f8zp4gh4th2smsax186n2ez-en":759},{"_creationTime":4,"_id":5,"children":6,"community":7,"display":9,"evaluation":14,"identity":250,"isFallback":234,"parentExtension":255,"providers":256,"relations":261,"repo":263,"tags":755,"workflow":756},1778692488329.0122,"k1706nwc7f8zp4gh4th2smsax186n2ez",[],{"reviewCount":8},0,{"description":10,"installMethods":11,"name":12,"sourceUrl":13},"TDD workflow enforcement with auto-test hook",{"claudeCode":12},"tdd","https://github.com/luiseiman/claude-kit",{"_creationTime":15,"_id":16,"extensionId":5,"locale":17,"result":18,"trustSignals":232,"workflow":248},1778692847867.9084,"kn748b463g0e5rsd6ywmp8mdrn86mp5n","en",{"checks":19,"evaluatedAt":204,"extensionSummary":205,"features":206,"nonGoals":211,"promptVersionExtension":215,"promptVersionScoring":216,"purpose":217,"rationale":218,"score":219,"summary":220,"tags":221,"targetMarket":226,"tier":227,"useCases":228},[20,25,28,31,35,38,42,47,50,53,57,61,64,68,71,74,77,80,83,86,90,94,98,102,106,109,112,115,119,122,125,128,131,134,137,141,145,149,152,156,159,162,165,168,171,174,177,180,183,186,190,193,196,200],{"category":21,"check":22,"severity":23,"summary":24},"Practical Utility","Problem relevance","pass","The description clearly states the problem of enforcing TDD workflow with auto-test hooks.",{"category":21,"check":26,"severity":23,"summary":27},"Unique selling proposition","The extension offers a unique value by automating TDD workflow enforcement and integrating test execution with file edits, going beyond simple prompt engineering.",{"category":21,"check":29,"severity":23,"summary":30},"Production readiness","The plugin provides a complete lifecycle for TDD workflow enforcement, including detection, execution, and reporting, making it ready for production use.",{"category":32,"check":33,"severity":23,"summary":34},"Scope","Single responsibility principle","The plugin focuses on TDD workflow enforcement through automated testing hooks, adhering to a single, coherent responsibility.",{"category":32,"check":36,"severity":23,"summary":37},"Description quality","The displayed description is concise, accurate, and directly reflects the plugin's functionality.",{"category":39,"check":40,"severity":23,"summary":41},"Invocation","Scoped tools","The plugin uses a single, well-defined hook (`test-on-edit.sh`) with specific matchers, avoiding generalist command execution.",{"category":43,"check":44,"severity":45,"summary":46},"Documentation","Configuration & parameter reference","not_applicable","The plugin does not expose configurable parameters or options beyond its core functionality.",{"category":32,"check":48,"severity":23,"summary":49},"Tool naming","The hook script 'test-on-edit.sh' is descriptively named and reflects its function.",{"category":32,"check":51,"severity":23,"summary":52},"Minimal I/O surface","The hook script processes specific file paths and provides focused output to stderr for test execution.",{"category":54,"check":55,"severity":23,"summary":56},"License","License usability","The plugin is licensed under the MIT license, which is a permissive open-source license.",{"category":58,"check":59,"severity":23,"summary":60},"Maintenance","Commit recency","The latest commit was on 2026-05-13, indicating recent maintenance.",{"category":58,"check":62,"severity":45,"summary":63},"Dependency Management","The plugin does not appear to have third-party dependencies beyond standard shell utilities.",{"category":65,"check":66,"severity":45,"summary":67},"Security","Secret Management","The plugin does not handle any secrets.",{"category":65,"check":69,"severity":23,"summary":70},"Injection","The hook script parses tool input as JSON and explicitly avoids executing arbitrary commands or instructions.",{"category":65,"check":72,"severity":23,"summary":73},"Transitive Supply-Chain Grenades","The plugin does not fetch external content at runtime; all logic is contained within the bundled script.",{"category":65,"check":75,"severity":23,"summary":76},"Sandbox Isolation","The script operates within the project root and standard directories, and its operations are limited to running tests, respecting sandbox boundaries.",{"category":65,"check":78,"severity":23,"summary":79},"Sandbox escape primitives","The script does not employ detached processes or retry loops around denied tool calls.",{"category":65,"check":81,"severity":23,"summary":82},"Data Exfiltration","The plugin does not read or submit confidential data to third parties.",{"category":65,"check":84,"severity":23,"summary":85},"Hidden Text Tricks","The bundled script content is free of hidden-steering tricks and uses clean printable ASCII.",{"category":87,"check":88,"severity":23,"summary":89},"Hooks","Opaque code execution","The hook script is plain, readable bash and does not use obfuscation techniques.",{"category":91,"check":92,"severity":23,"summary":93},"Portability","Structural Assumption","The script correctly identifies project root and makes no assumptions about user-specific project organization outside of standard file structures.",{"category":95,"check":96,"severity":23,"summary":97},"Trust","Issues Attention","There are 0 open and 0 closed issues in the last 90 days, indicating minimal issue load or excellent responsiveness.",{"category":99,"check":100,"severity":23,"summary":101},"Versioning","Release Management","The plugin has a `manifestVersion` of 2.9.0 and a CHANGELOG, indicating proper release management.",{"category":103,"check":104,"severity":23,"summary":105},"Code Execution","Validation","The script validates the JSON input for file paths and filters based on file types, though it doesn't use a formal schema library.",{"category":65,"check":107,"severity":23,"summary":108},"Unguarded Destructive Operations","The operation is non-destructive, and any failures are soft-blocked, exiting with `true`.",{"category":103,"check":110,"severity":23,"summary":111},"Error Handling","Errors are caught, and the script exits gracefully with informational messages or `true` for non-blocking operations.",{"category":103,"check":113,"severity":23,"summary":114},"Logging","The script logs its actions to stderr, providing an audit trail of test execution.",{"category":116,"check":117,"severity":45,"summary":118},"Compliance","GDPR","The plugin does not operate on personal data.",{"category":116,"check":120,"severity":23,"summary":121},"Target market","The plugin operates on code files and test runners, with no regional or jurisdictional limitations, making it global.",{"category":91,"check":123,"severity":23,"summary":124},"Runtime stability","The script uses standard bash, python3, and common tooling, ensuring cross-platform compatibility.",{"category":43,"check":126,"severity":23,"summary":127},"README","The README clearly describes the plugin's purpose and installation, and includes usage examples.",{"category":32,"check":129,"severity":45,"summary":130},"Tool surface size","This is a single-tool extension, so tool surface size is not applicable.",{"category":39,"check":132,"severity":45,"summary":133},"Overlapping near-synonym tools","The plugin uses a single hook, so there are no overlapping tools.",{"category":43,"check":135,"severity":23,"summary":136},"Phantom features","The README accurately reflects the functionality of the `test-on-edit.sh` hook.",{"category":138,"check":139,"severity":23,"summary":140},"Install","Installation instruction","The README provides clear installation instructions and a copy-pasteable example for the one-liner install.",{"category":142,"check":143,"severity":23,"summary":144},"Errors","Actionable error messages","Errors during test runner detection or execution provide clear messages and context for remediation.",{"category":146,"check":147,"severity":23,"summary":148},"Execution","Pinned dependencies","The script uses standard interpreters (bash, python3) and common tools, with no external dependencies requiring pinning.",{"category":32,"check":150,"severity":45,"summary":151},"Dry-run preview","The operation is not state-changing and does not send data outward, so a dry-run preview is not applicable.",{"category":153,"check":154,"severity":45,"summary":155},"Protocol","Idempotent retry & timeouts","The plugin is stateless and does not involve remote calls or state-changing operations that require idempotency or timeouts.",{"category":116,"check":157,"severity":23,"summary":158},"Telemetry opt-in","The plugin does not emit any telemetry.",{"category":39,"check":160,"severity":23,"summary":161},"Name collisions","The plugin is a single unit and does not have name collisions with other extensions or built-ins.",{"category":39,"check":163,"severity":45,"summary":164},"Hooks-off mechanism","As this plugin is a single script without complex hook management, a specific 'hooks-off' mechanism is not applicable or necessary.",{"category":39,"check":166,"severity":23,"summary":167},"Hook matcher tightness","The hook's matcher is reasonably tight, focusing on specific file types and excluding test files and directories.",{"category":65,"check":169,"severity":23,"summary":170},"Hook security","The hook is non-destructive and does not touch the network; it only runs tests, which is safe.",{"category":87,"check":172,"severity":45,"summary":173},"Silent prompt rewriting","The plugin does not have a UserPromptSubmit hook.",{"category":65,"check":175,"severity":45,"summary":176},"Permission Hook","The plugin does not use PermissionRequest hooks.",{"category":116,"check":178,"severity":23,"summary":179},"Hook privacy","The plugin's hooks do not involve network communication or logging to remote services.",{"category":103,"check":181,"severity":23,"summary":182},"Hook dependency","The hook script is a short, readable bash file within the repository.",{"category":43,"check":184,"severity":23,"summary":185},"Feature Transparency","The README clearly describes the functionality of the `test-on-edit.sh` hook.",{"category":187,"check":188,"severity":23,"summary":189},"Convention","Layout convention adherence","The plugin adheres to the expected directory structure and the README documents the script's purpose.",{"category":187,"check":191,"severity":45,"summary":192},"Plugin state","The plugin does not have any persistent state.",{"category":65,"check":194,"severity":45,"summary":195},"Keychain-stored secrets","The plugin does not consume any secrets.",{"category":197,"check":198,"severity":45,"summary":199},"Dependencies","Tagged release sourcing","This plugin does not bundle other MCP servers.",{"category":201,"check":202,"severity":23,"summary":203},"Installation","Clean uninstall","The plugin only runs local commands and does not spawn background daemons, ensuring a clean uninstall.",1778692847751,"This plugin enforces a Test-Driven Development (TDD) workflow by automatically running the project's test suite whenever a source code file is edited. It detects the test runner (pytest, vitest, jest, go, swift) based on project configuration files and filters edits to only trigger on relevant source files, excluding test files themselves. The hook runs non-destructively and provides output to stderr.",[207,208,209,210],"Automatic test execution on code edits","Detection of multiple test runners (pytest, vitest, jest, go, swift)","Filtering of edits to only trigger on source files","Non-blocking execution with informational output",[212,213,214],"Replacing or managing test runners","Blocking or failing builds based on test results","Running tests on test files themselves","3.0.0","4.4.0","To automate and enforce TDD practices by ensuring tests are run on code changes, promoting robust development cycles.","The plugin is well-documented, secure, and follows best practices. The only minor point is the lack of a formal schema library for input validation, which is a very minor concern given the script's focus.",99,"A high-quality plugin for enforcing TDD workflows with automated testing.",[12,222,223,224,225],"testing","workflow","automation","hooks","global","verified",[229,230,231],"Enforcing TDD in development workflows","Ensuring tests are run immediately after code modifications","Integrating automated testing into the development lifecycle",{"codeQuality":233,"collectedAt":235,"documentation":236,"maintenance":239,"security":245,"testCoverage":247},{"hasLockfile":234},false,1778692829648,{"descriptionLength":237,"readmeSize":238},44,35166,{"closedIssues90d":8,"forks":240,"hasChangelog":241,"manifestVersion":242,"openIssues90d":8,"pushedAt":243,"stars":244},1,true,"2.9.0",1778672535000,6,{"hasNpmPackage":234,"license":246,"smitheryVerified":234},"MIT",{"hasCi":241,"hasTests":241},{"updatedAt":249},1778692847867,{"basePath":251,"githubOwner":252,"githubRepo":253,"locale":17,"slug":12,"type":254},"stacks/tdd","luiseiman","claude-kit","plugin",null,{"evaluate":257,"extract":259},{"promptVersionExtension":215,"promptVersionScoring":216,"score":219,"tags":258,"targetMarket":226,"tier":227},[12,222,223,224,225],{"commitSha":260},"HEAD",{"repoId":262},"kd79wqc8an5wh20cc2znr8tyb586mxwx",{"_creationTime":264,"_id":262,"identity":265,"providers":266,"workflow":751},1778692481646.1384,{"githubOwner":252,"githubRepo":253,"sourceUrl":13},{"classify":267,"discover":725,"github":728},{"commitSha":260,"extensions":268},[269,287,353,362,370,378,386,394,402,418,426,434,444,454,462,470,480,487,503,511,533,541,549,557,565,573,581,589,597,605,613,621,629,637,645,653,661,669,677,685,693,701,709,717],{"basePath":270,"description":271,"displayName":272,"installMethods":273,"rationale":275,"selectedPaths":276,"source":285,"sourceLanguage":17,"type":286},"","Configuration governance for Claude Code — bootstrap, audit, sync, and evolve .claude/ across projects","dotforge",{"claudeCode":274},"luiseiman/claude-kit","marketplace.json at .claude-plugin/marketplace.json",[277,280,282],{"path":278,"priority":279},".claude-plugin/marketplace.json","mandatory",{"path":281,"priority":279},"README.md",{"path":283,"priority":284},"LICENSE","high","rule","marketplace",{"basePath":270,"description":288,"displayName":272,"installMethods":289,"license":246,"rationale":290,"selectedPaths":291,"source":285,"sourceLanguage":17,"type":254},"Behavior governance for Claude Code — declarative runtime policies on tool calls (search-first, no-destructive-git, verify-before-done, …) compiled to PreToolUse hooks, plus configuration governance: 18 skills, 7 agents, 16 stacks, audit scoring, practices pipeline.",{"claudeCode":272},"plugin manifest at .claude-plugin/plugin.json",[292,294,295,296,299,301,303,305,307,309,311,313,315,317,319,321,323,325,327,329,331,333,335,337,339,341,343,345,347,349,351],{"path":293,"priority":279},".claude-plugin/plugin.json",{"path":281,"priority":279},{"path":283,"priority":284},{"path":297,"priority":298},"skills/audit-project/SKILL.md","medium",{"path":300,"priority":298},"skills/benchmark/SKILL.md",{"path":302,"priority":298},"skills/bootstrap-project/SKILL.md",{"path":304,"priority":298},"skills/capture-practice/SKILL.md",{"path":306,"priority":298},"skills/diff-project/SKILL.md",{"path":308,"priority":298},"skills/domain-extract/SKILL.md",{"path":310,"priority":298},"skills/export-config/SKILL.md",{"path":312,"priority":298},"skills/forge-behavior/SKILL.md",{"path":314,"priority":298},"skills/init-project/SKILL.md",{"path":316,"priority":298},"skills/learn-project/SKILL.md",{"path":318,"priority":298},"skills/mcp-add/SKILL.md",{"path":320,"priority":298},"skills/plugin-generator/SKILL.md",{"path":322,"priority":298},"skills/reset-project/SKILL.md",{"path":324,"priority":298},"skills/rule-effectiveness/SKILL.md",{"path":326,"priority":298},"skills/scout-repos/SKILL.md",{"path":328,"priority":298},"skills/session-insights/SKILL.md",{"path":330,"priority":298},"skills/sync-template/SKILL.md",{"path":332,"priority":298},"skills/update-practices/SKILL.md",{"path":334,"priority":298},"skills/watch-upstream/SKILL.md",{"path":336,"priority":284},"agents/architect.md",{"path":338,"priority":284},"agents/code-reviewer.md",{"path":340,"priority":284},"agents/implementer.md",{"path":342,"priority":284},"agents/researcher.md",{"path":344,"priority":284},"agents/security-auditor.md",{"path":346,"priority":284},"agents/session-reviewer.md",{"path":348,"priority":284},"agents/test-runner.md",{"path":350,"priority":284},"hooks/detect-claude-changes.sh",{"path":352,"priority":284},"hooks/hooks.json",{"basePath":354,"description":355,"displayName":356,"installMethods":357,"rationale":358,"selectedPaths":359,"source":285,"sourceLanguage":17,"type":254},"stacks/aws-deploy","AWS CDK/SAM/CloudFormation infrastructure-as-code rules for Claude Code.","dotforge-stack-aws-deploy",{"claudeCode":356},"plugin manifest at stacks/aws-deploy/plugin.json",[360],{"path":361,"priority":279},"plugin.json",{"basePath":363,"description":364,"displayName":365,"installMethods":366,"rationale":367,"selectedPaths":368,"source":285,"sourceLanguage":17,"type":254},"stacks/data-analysis","SQLite/PostgreSQL, pandas/polars, and Jupyter notebook rules for data analysis with Claude Code.","dotforge-stack-data-analysis",{"claudeCode":365},"plugin manifest at stacks/data-analysis/plugin.json",[369],{"path":361,"priority":279},{"basePath":371,"description":372,"displayName":373,"installMethods":374,"rationale":375,"selectedPaths":376,"source":285,"sourceLanguage":17,"type":254},"stacks/devcontainer","Dev Container configuration, image pinning, and features rules for Claude Code.","dotforge-stack-devcontainer",{"claudeCode":373},"plugin manifest at stacks/devcontainer/plugin.json",[377],{"path":361,"priority":279},{"basePath":379,"description":380,"displayName":381,"installMethods":382,"rationale":383,"selectedPaths":384,"source":285,"sourceLanguage":17,"type":254},"stacks/docker-deploy","Docker Compose and Dockerfile best practices, health checks, and deployment rules for Claude Code.","dotforge-stack-docker-deploy",{"claudeCode":381},"plugin manifest at stacks/docker-deploy/plugin.json",[385],{"path":361,"priority":279},{"basePath":387,"description":388,"displayName":389,"installMethods":390,"rationale":391,"selectedPaths":392,"source":285,"sourceLanguage":17,"type":254},"stacks/gcp-cloud-run","GCP Cloud Run container deployment, Cloud Build, and health check rules for Claude Code.","dotforge-stack-gcp-cloud-run",{"claudeCode":389},"plugin manifest at stacks/gcp-cloud-run/plugin.json",[393],{"path":361,"priority":279},{"basePath":395,"description":396,"displayName":397,"installMethods":398,"rationale":399,"selectedPaths":400,"source":285,"sourceLanguage":17,"type":254},"stacks/go-api","Go 1.22+ with standard library net/http, Go modules, and API patterns rules for Claude Code.","dotforge-stack-go-api",{"claudeCode":397},"plugin manifest at stacks/go-api/plugin.json",[401],{"path":361,"priority":279},{"basePath":403,"description":404,"displayName":405,"installMethods":406,"rationale":407,"selectedPaths":408,"source":285,"sourceLanguage":17,"type":254},"stacks/hookify","Dynamic hook rules from natural language. Create .claude/hookify.*.local.md files that act as warn/block rules without editing hooks.json.","dotforge-stack-hookify",{"claudeCode":405},"plugin manifest at stacks/hookify/plugin.json",[409,410,412,414,416],{"path":361,"priority":279},{"path":411,"priority":298},"skills/hookify/SKILL.md",{"path":413,"priority":284},"hooks/hookify-pretooluse.py",{"path":415,"priority":284},"hooks/hookify-stop.py",{"path":417,"priority":284},"hooks/hookify-userpromptsubmit.py",{"basePath":419,"description":420,"displayName":421,"installMethods":422,"rationale":423,"selectedPaths":424,"source":285,"sourceLanguage":17,"type":254},"stacks/java-spring","Java 21+ with Spring Boot 3.x, Maven/Gradle, records, and virtual threads rules for Claude Code.","dotforge-stack-java-spring",{"claudeCode":421},"plugin manifest at stacks/java-spring/plugin.json",[425],{"path":361,"priority":279},{"basePath":427,"description":428,"displayName":429,"installMethods":430,"rationale":431,"selectedPaths":432,"source":285,"sourceLanguage":17,"type":254},"stacks/node-express","Node.js 20+ with Express/Fastify, TypeScript, and ESM module rules for Claude Code.","dotforge-stack-node-express",{"claudeCode":429},"plugin manifest at stacks/node-express/plugin.json",[433],{"path":361,"priority":279},{"basePath":435,"description":436,"displayName":437,"installMethods":438,"rationale":439,"selectedPaths":440,"source":285,"sourceLanguage":17,"type":254},"stacks/python-fastapi","Python 3.12+ with FastAPI, async/await, type hints, and Ruff linting rules for Claude Code.","dotforge-stack-python-fastapi",{"claudeCode":437},"plugin manifest at stacks/python-fastapi/plugin.json",[441,442],{"path":361,"priority":279},{"path":443,"priority":284},"hooks/lint-python.sh",{"basePath":445,"description":446,"displayName":447,"installMethods":448,"rationale":449,"selectedPaths":450,"source":285,"sourceLanguage":17,"type":254},"stacks/react-vite-ts","React 18+ with Vite, TypeScript strict mode, Tailwind CSS, and Zustand rules for Claude Code.","dotforge-stack-react-vite-ts",{"claudeCode":447},"plugin manifest at stacks/react-vite-ts/plugin.json",[451,452],{"path":361,"priority":279},{"path":453,"priority":284},"hooks/lint-ts.sh",{"basePath":455,"description":456,"displayName":457,"installMethods":458,"rationale":459,"selectedPaths":460,"source":285,"sourceLanguage":17,"type":254},"stacks/redis","Redis Streams, caching patterns, and pub/sub rules for Claude Code.","dotforge-stack-redis",{"claudeCode":457},"plugin manifest at stacks/redis/plugin.json",[461],{"path":361,"priority":279},{"basePath":463,"description":464,"displayName":465,"installMethods":466,"rationale":467,"selectedPaths":468,"source":285,"sourceLanguage":17,"type":254},"stacks/supabase","Supabase migrations, RLS policies, Edge Functions, and database rules for Claude Code.","dotforge-stack-supabase",{"claudeCode":465},"plugin manifest at stacks/supabase/plugin.json",[469],{"path":361,"priority":279},{"basePath":471,"description":472,"displayName":473,"installMethods":474,"rationale":475,"selectedPaths":476,"source":285,"sourceLanguage":17,"type":254},"stacks/swift-swiftui","Swift 5.9+ with SwiftUI, iOS 17+, @Observable, async/await, and SPM rules for Claude Code.","dotforge-stack-swift-swiftui",{"claudeCode":473},"plugin manifest at stacks/swift-swiftui/plugin.json",[477,478],{"path":361,"priority":279},{"path":479,"priority":284},"hooks/lint-swift.sh",{"basePath":251,"description":10,"displayName":12,"installMethods":481,"rationale":482,"selectedPaths":483,"source":285,"sourceLanguage":17,"type":254},{"claudeCode":12},"plugin manifest at stacks/tdd/plugin.json",[484,485],{"path":361,"priority":279},{"path":486,"priority":284},"hooks/test-on-edit.sh",{"basePath":488,"description":489,"displayName":490,"installMethods":491,"rationale":492,"selectedPaths":493,"source":285,"sourceLanguage":17,"type":254},"stacks/trading","Trading & investment analysis — thesis tracking, earnings watch, screening, catalyst calendar, backtesting ADR gate. AR + US markets.","dotforge-stack-trading",{"claudeCode":490},"plugin manifest at stacks/trading/plugin.json",[494,495,497,499,501],{"path":361,"priority":279},{"path":496,"priority":298},"skills/catalyst-calendar/SKILL.md",{"path":498,"priority":298},"skills/earnings-watch/SKILL.md",{"path":500,"priority":298},"skills/screen/SKILL.md",{"path":502,"priority":298},"skills/thesis-tracker/SKILL.md",{"basePath":504,"description":505,"displayName":506,"installMethods":507,"rationale":508,"selectedPaths":509,"source":285,"sourceLanguage":17,"type":254},"stacks/vps-ssh","SSH/VPS deployment — remote host conventions, key management, and rsync/scp patterns for bare-metal or self-hosted deploys (Oracle Free Tier, Hetzner, DigitalOcean).","dotforge-stack-vps-ssh",{"claudeCode":506},"plugin manifest at stacks/vps-ssh/plugin.json",[510],{"path":361,"priority":279},{"basePath":512,"description":513,"displayName":514,"installMethods":515,"rationale":516,"selectedPaths":517,"source":285,"sourceLanguage":17,"type":532},"integrations/openclaw","dotforge configuration factory — audit, sync, status, insights across projects from any channel","forge",{"claudeCode":274},"SKILL.md frontmatter at integrations/openclaw/SKILL.md",[518,520,522,524,526,528,530],{"path":519,"priority":279},"SKILL.md",{"path":521,"priority":298},"AGENTS.md",{"path":523,"priority":298},"HEARTBEAT.md",{"path":525,"priority":298},"IDENTITY.md",{"path":527,"priority":298},"SOUL.md",{"path":529,"priority":298},"TOOLS.md",{"path":531,"priority":298},"USER.md","skill",{"basePath":534,"description":535,"displayName":536,"installMethods":537,"rationale":538,"selectedPaths":539,"source":285,"sourceLanguage":17,"type":532},"skills/audit-project","Audits the Claude Code configuration of a project against the dotforge template. Generates a report with score and gaps.","audit-project",{"claudeCode":274},"SKILL.md frontmatter at skills/audit-project/SKILL.md",[540],{"path":519,"priority":279},{"basePath":542,"description":543,"displayName":544,"installMethods":545,"rationale":546,"selectedPaths":547,"source":285,"sourceLanguage":17,"type":532},"skills/benchmark","Compare Claude Code output with full config vs minimal config using standardized tasks per stack.","benchmark",{"claudeCode":274},"SKILL.md frontmatter at skills/benchmark/SKILL.md",[548],{"path":519,"priority":279},{"basePath":550,"description":551,"displayName":552,"installMethods":553,"rationale":554,"selectedPaths":555,"source":285,"sourceLanguage":17,"type":532},"skills/bootstrap-project","Initializes the Claude Code configuration in a new or existing project using the dotforge template.","bootstrap-project",{"claudeCode":274},"SKILL.md frontmatter at skills/bootstrap-project/SKILL.md",[556],{"path":519,"priority":279},{"basePath":558,"description":559,"displayName":560,"installMethods":561,"rationale":562,"selectedPaths":563,"source":285,"sourceLanguage":17,"type":532},"skills/capture-practice","Captures an insight or practice discovered during work and registers it in the dotforge practices/inbox.","capture-practice",{"claudeCode":274},"SKILL.md frontmatter at skills/capture-practice/SKILL.md",[564],{"path":519,"priority":279},{"basePath":566,"description":567,"displayName":568,"installMethods":569,"rationale":570,"selectedPaths":571,"source":285,"sourceLanguage":17,"type":532},"skills/diff-project","Shows what changed in dotforge since the project's last sync, to decide whether running /forge sync is worthwhile.","diff-project",{"claudeCode":274},"SKILL.md frontmatter at skills/diff-project/SKILL.md",[572],{"path":519,"priority":279},{"basePath":574,"description":575,"displayName":576,"installMethods":577,"rationale":578,"selectedPaths":579,"source":285,"sourceLanguage":17,"type":532},"skills/domain-extract","Extract domain knowledge from existing project sources and generate domain rules. Also handles vault sync and domain listing.","domain-extract",{"claudeCode":274},"SKILL.md frontmatter at skills/domain-extract/SKILL.md",[580],{"path":519,"priority":279},{"basePath":582,"description":583,"displayName":584,"installMethods":585,"rationale":586,"selectedPaths":587,"source":285,"sourceLanguage":17,"type":532},"skills/export-config","Export dotforge configuration to other AI code editors (Cursor, Codex, Windsurf, OpenClaw).","export-config",{"claudeCode":274},"SKILL.md frontmatter at skills/export-config/SKILL.md",[588],{"path":519,"priority":279},{"basePath":590,"description":591,"displayName":592,"installMethods":593,"rationale":594,"selectedPaths":595,"source":285,"sourceLanguage":17,"type":532},"skills/forge-behavior","Manage dotforge v3 behavior governance — view status, toggle behaviors, adjust strictness. Use when the user asks about active behaviors, wants to disable one for the current session, or adjust escalation thresholds.","forge-behavior",{"claudeCode":274},"SKILL.md frontmatter at skills/forge-behavior/SKILL.md",[596],{"path":519,"priority":279},{"basePath":598,"description":599,"displayName":600,"installMethods":601,"rationale":602,"selectedPaths":603,"source":285,"sourceLanguage":17,"type":532},"skills/init-project","Quick-start Claude Code configuration. Auto-detects stack, asks 4 questions to understand the project, generates complete config.","init-project",{"claudeCode":274},"SKILL.md frontmatter at skills/init-project/SKILL.md",[604],{"path":519,"priority":279},{"basePath":606,"description":607,"displayName":608,"installMethods":609,"rationale":610,"selectedPaths":611,"source":285,"sourceLanguage":17,"type":532},"skills/learn-project","Scan project code to detect patterns, dependencies, and conventions. Propose domain rules based on what the code actually does.","learn-project",{"claudeCode":274},"SKILL.md frontmatter at skills/learn-project/SKILL.md",[612],{"path":519,"priority":279},{"basePath":614,"description":615,"displayName":616,"installMethods":617,"rationale":618,"selectedPaths":619,"source":285,"sourceLanguage":17,"type":532},"skills/mcp-add","Install an MCP server template from dotforge into a project or global Claude Code config with a single command.","mcp-add",{"claudeCode":274},"SKILL.md frontmatter at skills/mcp-add/SKILL.md",[620],{"path":519,"priority":279},{"basePath":622,"description":623,"displayName":624,"installMethods":625,"rationale":626,"selectedPaths":627,"source":285,"sourceLanguage":17,"type":532},"skills/plugin-generator","Generate a Claude Code plugin package from the current project's dotforge configuration, ready for marketplace submission.","plugin-generator",{"claudeCode":274},"SKILL.md frontmatter at skills/plugin-generator/SKILL.md",[628],{"path":519,"priority":279},{"basePath":630,"description":631,"displayName":632,"installMethods":633,"rationale":634,"selectedPaths":635,"source":285,"sourceLanguage":17,"type":532},"skills/reset-project","Restore a project's .claude/ directory to the dotforge template from scratch, with backup and rollback option.","reset-project",{"claudeCode":274},"SKILL.md frontmatter at skills/reset-project/SKILL.md",[636],{"path":519,"priority":279},{"basePath":638,"description":639,"displayName":640,"installMethods":641,"rationale":642,"selectedPaths":643,"source":285,"sourceLanguage":17,"type":532},"skills/rule-effectiveness","Analyze which rules are actively used vs inert. Detect coverage gaps. Recommend pruning to reduce token consumption.","rule-effectiveness",{"claudeCode":274},"SKILL.md frontmatter at skills/rule-effectiveness/SKILL.md",[644],{"path":519,"priority":279},{"basePath":646,"description":647,"displayName":648,"installMethods":649,"rationale":650,"selectedPaths":651,"source":285,"sourceLanguage":17,"type":532},"skills/scout-repos","Fetch .claude/ configs from curated repos in sources.yml, compare against dotforge template, report novel patterns.","scout-repos",{"claudeCode":274},"SKILL.md frontmatter at skills/scout-repos/SKILL.md",[652],{"path":519,"priority":279},{"basePath":654,"description":655,"displayName":656,"installMethods":657,"rationale":658,"selectedPaths":659,"source":285,"sourceLanguage":17,"type":532},"skills/session-insights","Analyze past Claude Code sessions to extract patterns, metrics, and recommendations.","session-insights",{"claudeCode":274},"SKILL.md frontmatter at skills/session-insights/SKILL.md",[660],{"path":519,"priority":279},{"basePath":662,"description":663,"displayName":664,"installMethods":665,"rationale":666,"selectedPaths":667,"source":285,"sourceLanguage":17,"type":532},"skills/sync-template","Update an existing project's Claude Code configuration against the current dotforge template, without losing local customizations.","sync-template",{"claudeCode":274},"SKILL.md frontmatter at skills/sync-template/SKILL.md",[668],{"path":519,"priority":279},{"basePath":670,"description":671,"displayName":672,"installMethods":673,"rationale":674,"selectedPaths":675,"source":285,"sourceLanguage":17,"type":532},"skills/update-practices","Process the practices inbox, evaluate, incorporate into dotforge, and suggest propagation to projects.","update-practices",{"claudeCode":274},"SKILL.md frontmatter at skills/update-practices/SKILL.md",[676],{"path":519,"priority":279},{"basePath":678,"description":679,"displayName":680,"installMethods":681,"rationale":682,"selectedPaths":683,"source":285,"sourceLanguage":17,"type":532},"skills/watch-upstream","Fetch official Anthropic/Claude Code docs, detect changes relevant to dotforge, report deltas.","watch-upstream",{"claudeCode":274},"SKILL.md frontmatter at skills/watch-upstream/SKILL.md",[684],{"path":519,"priority":279},{"basePath":686,"description":687,"displayName":688,"installMethods":689,"rationale":690,"selectedPaths":691,"source":285,"sourceLanguage":17,"type":532},"stacks/hookify/skills/hookify","Create dynamic hook rules from natural language descriptions. Generates .claude/hookify.*.local.md files that warn or block operations matching patterns. Triggers on \"hookify\", \"create hook rule\", \"warn me when\", \"block when\", \"don't let me\".","hookify",{"claudeCode":274},"SKILL.md frontmatter at stacks/hookify/skills/hookify/SKILL.md",[692],{"path":519,"priority":279},{"basePath":694,"description":695,"displayName":696,"installMethods":697,"rationale":698,"selectedPaths":699,"source":285,"sourceLanguage":17,"type":532},"stacks/trading/skills/catalyst-calendar","Maintain calendar of upcoming catalysts for portfolio positions and watchlist. Earnings dates, ex-div dates, regulatory events, macro releases. Triggers on \"catalysts\", \"upcoming events\", \"earnings calendar\", \"what's coming up\", \"catalyst calendar\".","catalyst-calendar",{"claudeCode":274},"SKILL.md frontmatter at stacks/trading/skills/catalyst-calendar/SKILL.md",[700],{"path":519,"priority":279},{"basePath":702,"description":703,"displayName":704,"installMethods":705,"rationale":706,"selectedPaths":707,"source":285,"sourceLanguage":17,"type":532},"stacks/trading/skills/earnings-watch","Quick post-earnings analysis for portfolio holdings. Beat/miss, key metrics, thesis impact, estimate revision. Triggers on \"earnings update\", \"quarterly results\", \"Q1/Q2/Q3/Q4 results\", \"post-earnings\".","earnings-watch",{"claudeCode":274},"SKILL.md frontmatter at stacks/trading/skills/earnings-watch/SKILL.md",[708],{"path":519,"priority":279},{"basePath":710,"description":711,"displayName":712,"installMethods":713,"rationale":714,"selectedPaths":715,"source":285,"sourceLanguage":17,"type":532},"stacks/trading/skills/screen","Run quantitative or thematic stock screens to surface investment ideas. Supports AR (BYMA, CEDEARs) and US markets. Triggers on \"screen\", \"stock screen\", \"find stocks\", \"investment ideas\", \"what looks interesting\".","screen",{"claudeCode":274},"SKILL.md frontmatter at stacks/trading/skills/screen/SKILL.md",[716],{"path":519,"priority":279},{"basePath":718,"description":719,"displayName":720,"installMethods":721,"rationale":722,"selectedPaths":723,"source":285,"sourceLanguage":17,"type":532},"stacks/trading/skills/thesis-tracker","Track and update investment theses for portfolio positions and watchlist. Maintains scorecard of pillars, catalysts, and conviction level. Triggers on \"update thesis\", \"thesis check\", \"is my thesis intact\", \"add data point\", \"review positions\".","thesis-tracker",{"claudeCode":274},"SKILL.md frontmatter at stacks/trading/skills/thesis-tracker/SKILL.md",[724],{"path":519,"priority":279},{"sources":726},[727],"manual",{"closedIssues90d":8,"description":729,"forks":240,"homepage":730,"license":246,"openIssues90d":8,"pushedAt":243,"readmeSize":238,"stars":244,"topics":731},"Configuration governance for Claude Code. Bootstrap, audit, sync, and evolve .claude/ across projects.","https://github.com/luiseiman/dotforge",[732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750],"ai-coding","anthropic","claude-code","claude-code-agents","claude-code-config","claude-code-hooks","claude-code-plugins","claude-code-skills","claude-code-template","claude-md","cli-tools","configuration-management","developer-tools","claude-code-audit","claude-code-rules","claude-code-plugin","claude-plugin","mcp-servers","prompt-engineering",{"classifiedAt":752,"discoverAt":753,"extractAt":754,"githubAt":754,"updatedAt":752},1778692487649,1778692481646,1778692485708,[224,225,12,222,223],{"evaluatedAt":249,"extractAt":757,"updatedAt":249},1778692488329,[],[760,790,819,846,872,903],{"_creationTime":761,"_id":762,"community":763,"display":764,"identity":769,"providers":772,"relations":782,"tags":785,"workflow":786},1778685765056.1758,"k17a80t18qpe9tmapz3fnw597986mpsy",{"reviewCount":8},{"description":765,"installMethods":766,"name":767,"sourceUrl":768},"Create, update, and fix Cypress tests. Connect to Cypress Cloud to see test results and use data to manage your test suite.",{"claudeCode":767},"cypress","https://github.com/cypress-io/ai-toolkit",{"basePath":270,"githubOwner":770,"githubRepo":771,"locale":17,"slug":771,"type":254},"cypress-io","ai-toolkit",{"evaluate":773,"extract":778},{"promptVersionExtension":215,"promptVersionScoring":216,"score":774,"tags":775,"targetMarket":226,"tier":227},100,[767,222,224,776,777],"ai","qa",{"commitSha":260,"license":246,"plugin":779},{"mcpCount":8,"provider":780,"skillCount":781},"classify",3,{"parentExtensionId":783,"repoId":784},"k170k28hx0d93ds1md7v66h33986nap6","kd778b5hp7aqcpb58zn9yj8xas86meqd",[776,224,767,777,222],{"evaluatedAt":787,"extractAt":788,"updatedAt":789},1778685834132,1778685765056,1778685985373,{"_creationTime":791,"_id":792,"community":793,"display":794,"identity":799,"providers":803,"relations":813,"tags":815,"workflow":816},1778685949178.788,"k176z1bn53zzf0sm269h9x914x86nmtv",{"reviewCount":8},{"description":795,"installMethods":796,"name":797,"sourceUrl":798},"Build AG2 (AutoGen) multi-agent systems with slash commands: scaffold agents, wire workflows, create tools, and review code",{"claudeCode":797},"ag2-agent-builder","https://github.com/davepoon/buildwithclaude",{"basePath":800,"githubOwner":801,"githubRepo":802,"locale":17,"slug":797,"type":254},"plugins/ag2-agent-builder","davepoon","buildwithclaude",{"evaluate":804,"extract":811},{"promptVersionExtension":215,"promptVersionScoring":216,"score":774,"tags":805,"targetMarket":226,"tier":227},[806,807,808,223,809,810],"autogen","multi-agent","agent-building","tools","python",{"commitSha":260,"license":812},"Apache-2.0",{"repoId":814},"kd719kw54vhmcscq7ckdp59fg586mnt6",[808,806,807,810,809,223],{"evaluatedAt":817,"extractAt":818,"updatedAt":817},1778687364609,1778685949178,{"_creationTime":820,"_id":821,"community":822,"display":823,"identity":828,"providers":830,"relations":839,"tags":841,"workflow":842},1778699381979.8687,"k178wjnjd4vs7xhw95cq04689n86nhkt",{"reviewCount":8},{"description":824,"installMethods":825,"name":826,"sourceUrl":827},"734 safety hooks for Claude Code — prevent file deletion, credential leaks, git disasters, and token waste during autonomous AI coding sessions",{"claudeCode":826},"cc-safe-setup","https://github.com/yurukusa/cc-safe-setup",{"basePath":270,"githubOwner":829,"githubRepo":826,"locale":17,"slug":826,"type":254},"yurukusa",{"evaluate":831,"extract":837},{"promptVersionExtension":215,"promptVersionScoring":216,"score":219,"tags":832,"targetMarket":226,"tier":227},[833,225,834,835,836],"security","safety","code-quality","cli",{"commitSha":260,"license":246,"plugin":838},{"mcpCount":8,"provider":780,"skillCount":240},{"repoId":840},"kd75r9w9e5zg6a7p0g22f0n1td86nsat",[836,835,225,834,833],{"evaluatedAt":843,"extractAt":844,"updatedAt":845},1778699475909,1778699381979,1778699577905,{"_creationTime":847,"_id":848,"community":849,"display":850,"identity":854,"providers":855,"relations":864,"tags":867,"workflow":868},1778699408572.7253,"k17cm6081dkz91ebw27jqh38q586nfry",{"reviewCount":8},{"description":851,"installMethods":852,"name":737,"sourceUrl":853},"Production safety hooks for autonomous Claude Code operation. Context monitoring, syntax checking, branch protection, activity logging, and more.",{"claudeCode":737},"https://github.com/yurukusa/claude-code-hooks",{"basePath":270,"githubOwner":829,"githubRepo":737,"locale":17,"slug":737,"type":254},{"evaluate":856,"extract":861},{"promptVersionExtension":215,"promptVersionScoring":216,"score":219,"tags":857,"targetMarket":226,"tier":227},[834,225,858,859,836,860,833],"autonomous","production","monitoring",{"commitSha":260,"license":246,"plugin":862},{"mcpCount":8,"provider":780,"skillCount":863},2,{"parentExtensionId":865,"repoId":866},"k179rvzf2x5tsmmwbvpyv0mgxn86mkc8","kd7eh26xf9ft5m4mhhe34kedv586nq7c",[858,836,225,860,859,834,833],{"evaluatedAt":869,"extractAt":870,"updatedAt":871},1778699440255,1778699408572,1778699505044,{"_creationTime":873,"_id":874,"community":875,"display":876,"identity":881,"providers":883,"relations":895,"tags":898,"workflow":899},1778688322101.8254,"k17b9bmvrv1a5e41w678q1yvrh86m81g",{"reviewCount":8},{"description":877,"installMethods":878,"name":879,"sourceUrl":880},"Topic-based automatic memory for Claude Code — never lose context across sessions or compactions.",{"claudeCode":879},"claude-recap","https://github.com/hatawong/claude-recap",{"basePath":270,"githubOwner":882,"githubRepo":879,"locale":17,"slug":879,"type":254},"hatawong",{"evaluate":884,"extract":892},{"promptVersionExtension":215,"promptVersionScoring":216,"score":219,"tags":885,"targetMarket":226,"tier":227},[886,887,225,888,889,890,891],"memory","persistence","context-management","local-storage","bash","nodejs",{"commitSha":260,"license":246,"plugin":893},{"mcpCount":8,"provider":780,"skillCount":894},4,{"parentExtensionId":896,"repoId":897},"k17944zm3ehfvm4ntncyz1dzyx86nc6v","kd78y3gm1ky53msejxede6b4x986nqyc",[890,888,225,889,886,891,887],{"evaluatedAt":900,"extractAt":901,"updatedAt":902},1778688364899,1778688322101,1778688560725,{"_creationTime":904,"_id":905,"community":906,"display":907,"identity":912,"providers":914,"relations":918,"tags":919,"workflow":920},1778685949178.7913,"k178893jhzrwa53g69xtvqwt8h86n6p8",{"reviewCount":8},{"description":908,"installMethods":909,"name":911,"sourceUrl":798},"Essential safety hooks to prevent destructive operations in Claude Code. From cc-safe-setup (655+ hooks).",{"claudeCode":910},"hooks-safety","Hooks Safety",{"basePath":913,"githubOwner":801,"githubRepo":802,"locale":17,"slug":910,"type":254},"plugins/hooks-safety",{"evaluate":915,"extract":917},{"promptVersionExtension":215,"promptVersionScoring":216,"score":219,"tags":916,"targetMarket":226,"tier":227},[833,225,834,890,836],{"commitSha":260,"license":246},{"repoId":814},[890,836,225,834,833],{"evaluatedAt":921,"extractAt":818,"updatedAt":921},1778687676247]