@caoscompanybr/merlin 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/CLAUDE.md +216 -0
- package/.claude/hooks/README-license-gate.md +45 -0
- package/.claude/hooks/auto-summarize.js +47 -0
- package/.claude/hooks/context-monitor.js +60 -0
- package/.claude/hooks/doc-sync.js +111 -0
- package/.claude/hooks/license-gate.cjs +59 -0
- package/.claude/hooks/session-reset.js +27 -0
- package/.claude/hooks/thoughts-indexer.js +80 -0
- package/.claude/rules/merlin-constitution.md +27 -0
- package/.merlin-core/commands/README.md +19 -0
- package/.merlin-core/commands/founder-mode.md +51 -0
- package/.merlin-core/commands/git/commit.md +35 -0
- package/.merlin-core/commands/git/describe-pr.md +43 -0
- package/.merlin-core/commands/git/safe-commit.md +182 -0
- package/.merlin-core/commands/implementation/implement-plan.md +129 -0
- package/.merlin-core/commands/implementation/oneshot.md +63 -0
- package/.merlin-core/commands/implementation/tdd.md +152 -0
- package/.merlin-core/commands/planning/create-plan.md +184 -0
- package/.merlin-core/commands/planning/iterate-plan.md +45 -0
- package/.merlin-core/commands/planning/validate-plan.md +48 -0
- package/.merlin-core/commands/research/analyze-issue.md +155 -0
- package/.merlin-core/commands/research/research-codebase.md +157 -0
- package/.merlin-core/commands/review/adversarial-review.md +112 -0
- package/.merlin-core/commands/review/check.md +91 -0
- package/.merlin-core/commands/review/debug.md +135 -0
- package/.merlin-core/commands/review/doubts.md +178 -0
- package/.merlin-core/commands/review/engineering-audit.md +87 -0
- package/.merlin-core/commands/review/local-review.md +48 -0
- package/.merlin-core/commands/review/verify-goals.md +83 -0
- package/.merlin-core/commands/session/capture-feedback.md +74 -0
- package/.merlin-core/commands/session/capture-learning.md +155 -0
- package/.merlin-core/commands/session/check-objectives.md +85 -0
- package/.merlin-core/commands/session/conclude.md +125 -0
- package/.merlin-core/commands/session/create-handoff.md +88 -0
- package/.merlin-core/commands/session/create-objective.md +111 -0
- package/.merlin-core/commands/session/create-process.md +105 -0
- package/.merlin-core/commands/session/create-reminder.md +86 -0
- package/.merlin-core/commands/session/fast-start.md +261 -0
- package/.merlin-core/commands/session/recall-learnings.md +79 -0
- package/.merlin-core/commands/session/recall-processes.md +74 -0
- package/.merlin-core/commands/session/resume-handoff.md +51 -0
- package/.merlin-core/commands/session/run-process.md +53 -0
- package/.merlin-core/commands/special/beauty.md +89 -0
- package/.merlin-core/commands/special/common-ground.md +114 -0
- package/.merlin-core/commands/special/elicit.md +98 -0
- package/.merlin-core/commands/special/party.md +66 -0
- package/.merlin-core/commands/special/scrape.md +78 -0
- package/.merlin-core/commands/special/skill-audit.md +128 -0
- package/.merlin-core/commands/special/start-here.md +132 -0
- package/.merlin-core/constitution.md +442 -0
- package/.merlin-core/core/README.md +19 -0
- package/.merlin-core/core/alkimia/README.md +20 -0
- package/.merlin-core/core/alkimia/context/context-tracker.js +209 -0
- package/.merlin-core/core/alkimia/domain/domain-loader.js +215 -0
- package/.merlin-core/core/alkimia/engine.js +284 -0
- package/.merlin-core/core/alkimia/layers/l0-constitution.js +47 -0
- package/.merlin-core/core/alkimia/layers/l1-global.js +58 -0
- package/.merlin-core/core/alkimia/layers/l2-agent.js +58 -0
- package/.merlin-core/core/alkimia/layers/l3-workflow.js +54 -0
- package/.merlin-core/core/alkimia/layers/l4-task.js +45 -0
- package/.merlin-core/core/alkimia/layers/l5-squad.js +161 -0
- package/.merlin-core/core/alkimia/layers/l6-skill.js +520 -0
- package/.merlin-core/core/alkimia/layers/l7-star-command.js +87 -0
- package/.merlin-core/core/alkimia/layers/layer-processor.js +78 -0
- package/.merlin-core/core/alkimia/mandate.js +46 -0
- package/.merlin-core/core/alkimia/memory/doc-sync.js +201 -0
- package/.merlin-core/core/alkimia/memory/document-sharder.js +272 -0
- package/.merlin-core/core/alkimia/memory/git-history-retriever.js +225 -0
- package/.merlin-core/core/alkimia/memory/memory-bridge.js +97 -0
- package/.merlin-core/core/alkimia/memory/session-analyzer.js +400 -0
- package/.merlin-core/core/alkimia/memory/thoughts-indexer.js +477 -0
- package/.merlin-core/core/alkimia/memory/thoughts-provider.js +603 -0
- package/.merlin-core/core/alkimia/output/formatter.js +464 -0
- package/.merlin-core/core/alkimia/security/content-sanitizer.js +140 -0
- package/.merlin-core/core/alkimia/skill-importer.js +440 -0
- package/.merlin-core/core/alkimia/squads/default/.synapse/manifest +17 -0
- package/.merlin-core/core/alkimia/utils/frontmatter.js +321 -0
- package/.merlin-core/core/alkimia/utils/tokens.js +24 -0
- package/.merlin-core/core/approval/README.md +16 -0
- package/.merlin-core/core/approval/approval-engine.js +380 -0
- package/.merlin-core/core/approval/channels/cli-channel.js +50 -0
- package/.merlin-core/core/config/README.md +17 -0
- package/.merlin-core/core/config/config-cache.js +182 -0
- package/.merlin-core/core/config/config-loader.js +279 -0
- package/.merlin-core/core/config/config-resolver.js +411 -0
- package/.merlin-core/core/config/env-interpolator.js +123 -0
- package/.merlin-core/core/config/merge-utils.js +102 -0
- package/.merlin-core/core/config/schemas/core-config.schema.json +41 -0
- package/.merlin-core/core/config/schemas/framework-config.schema.json +24 -0
- package/.merlin-core/core/config/schemas/local-config.schema.json +23 -0
- package/.merlin-core/core/config/schemas/project-config.schema.json +189 -0
- package/.merlin-core/core/docs-consistency.js +140 -0
- package/.merlin-core/core/events/event-bus.js +344 -0
- package/.merlin-core/core/events/hook-handler.js +419 -0
- package/.merlin-core/core/execution/README.md +17 -0
- package/.merlin-core/core/execution/attempt-journal.js +380 -0
- package/.merlin-core/core/execution/autonomous-build-loop.js +637 -0
- package/.merlin-core/core/execution/build-orchestrator.js +296 -0
- package/.merlin-core/core/execution/build-state-manager.js +196 -0
- package/.merlin-core/core/execution/context-injector.js +204 -0
- package/.merlin-core/core/execution/cron-engine.js +247 -0
- package/.merlin-core/core/execution/cron-expression.js +148 -0
- package/.merlin-core/core/execution/env-preflight.js +423 -0
- package/.merlin-core/core/execution/guardrail-engine.js +745 -0
- package/.merlin-core/core/execution/heartbeat-engine.js +198 -0
- package/.merlin-core/core/execution/model-router.js +282 -0
- package/.merlin-core/core/execution/parallel-executor.js +378 -0
- package/.merlin-core/core/execution/parallel-monitor.js +201 -0
- package/.merlin-core/core/execution/party-session.js +311 -0
- package/.merlin-core/core/execution/rate-limit-manager.js +152 -0
- package/.merlin-core/core/execution/result-aggregator.js +215 -0
- package/.merlin-core/core/execution/semantic-merge-engine.js +320 -0
- package/.merlin-core/core/execution/subagent-dispatcher.js +721 -0
- package/.merlin-core/core/execution/success-verifier.js +227 -0
- package/.merlin-core/core/execution/task-metadata.js +105 -0
- package/.merlin-core/core/execution/team-executor.js +195 -0
- package/.merlin-core/core/execution/two-tier-editor.js +290 -0
- package/.merlin-core/core/execution/version-snapshot.js +294 -0
- package/.merlin-core/core/execution/wave-executor.js +224 -0
- package/.merlin-core/core/health-check/health-engine.js +415 -0
- package/.merlin-core/core/licensing/activation.js +281 -0
- package/.merlin-core/core/licensing/crc.js +103 -0
- package/.merlin-core/core/licensing/entitlement.js +99 -0
- package/.merlin-core/core/licensing/fingerprint.js +104 -0
- package/.merlin-core/core/licensing/gate.js +133 -0
- package/.merlin-core/core/licensing/hmac.js +42 -0
- package/.merlin-core/core/licensing/key.js +144 -0
- package/.merlin-core/core/licensing/license.js +212 -0
- package/.merlin-core/core/mcp/README.md +16 -0
- package/.merlin-core/core/mcp/browser-capability.js +191 -0
- package/.merlin-core/core/mcp/capability-mapper.js +92 -0
- package/.merlin-core/core/mcp/mcp-connector.js +278 -0
- package/.merlin-core/core/mcp/mcp-registry.js +101 -0
- package/.merlin-core/core/orchestration/README.md +17 -0
- package/.merlin-core/core/orchestration/agent-invoker.js +456 -0
- package/.merlin-core/core/orchestration/condition-evaluator.js +250 -0
- package/.merlin-core/core/orchestration/decision-tree.js +192 -0
- package/.merlin-core/core/orchestration/executor-assignment.js +372 -0
- package/.merlin-core/core/orchestration/gate-evaluator.js +653 -0
- package/.merlin-core/core/orchestration/intent-classifier.js +579 -0
- package/.merlin-core/core/orchestration/lock-manager.js +308 -0
- package/.merlin-core/core/orchestration/master-orchestrator.js +363 -0
- package/.merlin-core/core/orchestration/phase-tool-masks.js +194 -0
- package/.merlin-core/core/orchestration/recovery-handler.js +402 -0
- package/.merlin-core/core/orchestration/reflect-checkpoint.js +431 -0
- package/.merlin-core/core/orchestration/session-state.js +430 -0
- package/.merlin-core/core/orchestration/skill-dispatcher.js +255 -0
- package/.merlin-core/core/orchestration/step-loader.js +226 -0
- package/.merlin-core/core/orchestration/workflow-executor.js +864 -0
- package/.merlin-core/core/process/executor.js +231 -0
- package/.merlin-core/core/process/process-file.js +50 -0
- package/.merlin-core/core/process/secret-scan.js +86 -0
- package/.merlin-core/core/process/signature.js +77 -0
- package/.merlin-core/core/quality-gates/README.md +17 -0
- package/.merlin-core/core/quality-gates/layer1-precommit.js +110 -0
- package/.merlin-core/core/quality-gates/layer2-pr-automation.js +116 -0
- package/.merlin-core/core/quality-gates/layer3-human-review.js +133 -0
- package/.merlin-core/core/registry/service-registry.js +140 -0
- package/.merlin-core/core-config.yaml +159 -0
- package/.merlin-core/development/README.md +17 -0
- package/.merlin-core/development/agents/README.md +16 -0
- package/.merlin-core/development/agents/analyst.md +214 -0
- package/.merlin-core/development/agents/architect.md +166 -0
- package/.merlin-core/development/agents/data-engineer.md +154 -0
- package/.merlin-core/development/agents/dev.md +203 -0
- package/.merlin-core/development/agents/devops.md +236 -0
- package/.merlin-core/development/agents/grimorio.md +125 -0
- package/.merlin-core/development/agents/merlin-master.md +173 -0
- package/.merlin-core/development/agents/meta.md +190 -0
- package/.merlin-core/development/agents/pm.md +145 -0
- package/.merlin-core/development/agents/po.md +172 -0
- package/.merlin-core/development/agents/qa.md +275 -0
- package/.merlin-core/development/agents/researcher.md +218 -0
- package/.merlin-core/development/agents/scout.md +179 -0
- package/.merlin-core/development/agents/sm.md +148 -0
- package/.merlin-core/development/agents/ux.md +169 -0
- package/.merlin-core/development/agents/web-researcher.md +203 -0
- package/.merlin-core/development/checklists/adversarial-review-checklist.md +70 -0
- package/.merlin-core/development/checklists/operations-ci-checklist.md +40 -0
- package/.merlin-core/development/checklists/operations-deploy-checklist.md +54 -0
- package/.merlin-core/development/checklists/operations-publish-checklist.md +47 -0
- package/.merlin-core/development/checklists/source-verification-checklist.md +38 -0
- package/.merlin-core/development/templates/HEARTBEAT-template.md +46 -0
- package/.merlin-core/development/templates/ears-requirements-template.md +93 -0
- package/.merlin-core/development/templates/handoff-template.md +50 -0
- package/.merlin-core/development/templates/prd-template.md +62 -0
- package/.merlin-core/development/templates/research-template.md +53 -0
- package/.merlin-core/development/templates/spec-template.md +84 -0
- package/.merlin-core/development/workflows/brownfield-discovery.yaml +166 -0
- package/.merlin-core/development/workflows/brownfield-service.yaml +52 -0
- package/.merlin-core/development/workflows/development-cycle.yaml +57 -0
- package/.merlin-core/development/workflows/epic-orchestration.yaml +47 -0
- package/.merlin-core/development/workflows/folloni-funnel.yaml +177 -0
- package/.merlin-core/development/workflows/greenfield-fullstack.yaml +167 -0
- package/.merlin-core/development/workflows/greenfield-service.yaml +56 -0
- package/.merlin-core/development/workflows/qa-loop.yaml +115 -0
- package/.merlin-core/development/workflows/spec-pipeline.yaml +185 -0
- package/.merlin-core/development/workflows/steps/folloni-01-research.yaml +35 -0
- package/.merlin-core/development/workflows/steps/folloni-02-architecture.yaml +41 -0
- package/.merlin-core/development/workflows/steps/folloni-03-implementation.yaml +52 -0
- package/.merlin-core/development/workflows/story-development-cycle.yaml +67 -0
- package/.merlin-core/docs/GUIDE.md +413 -0
- package/.merlin-core/docs/merlin-commands-guide-pt.md +183 -0
- package/.merlin-core/framework-config.yaml +148 -0
- package/.merlin-core/hooks/README.md +16 -0
- package/.merlin-core/hooks/precompact-memory-flush.js +69 -0
- package/.merlin-core/hooks/pretooluse-remote-approve.js +113 -0
- package/.merlin-core/hooks/spikes/spike-b-hook.js +70 -0
- package/.merlin-core/hooks/spikes/spike-b-stub.js +70 -0
- package/.merlin-core/index.js +91 -0
- package/.merlin-core/local-config.yaml.template +31 -0
- package/.merlin-core/mcp-servers/lsp-bridge/index.js +397 -0
- package/.merlin-core/modules/scraping/module.json +23 -0
- package/.merlin-core/project-config.yaml +89 -0
- package/.merlin-core/schemas/README.md +18 -0
- package/.merlin-core/schemas/agent-hook-schema.json +152 -0
- package/.merlin-core/schemas/agent-schema.json +31 -0
- package/.merlin-core/schemas/command-schema.json +18 -0
- package/.merlin-core/schemas/feedback-schema.json +36 -0
- package/.merlin-core/schemas/handoff-schema.json +19 -0
- package/.merlin-core/schemas/learning-schema.json +51 -0
- package/.merlin-core/schemas/module.schema.json +124 -0
- package/.merlin-core/schemas/must-haves-schema.json +95 -0
- package/.merlin-core/schemas/objective-schema.json +23 -0
- package/.merlin-core/schemas/plan-schema.json +20 -0
- package/.merlin-core/schemas/process-schema.json +82 -0
- package/.merlin-core/schemas/reminder-schema.json +20 -0
- package/.merlin-core/schemas/skill-eval-schema.json +92 -0
- package/.merlin-core/schemas/skill-schema.json +77 -0
- package/.merlin-core/schemas/workflow-schema.json +38 -0
- package/.merlin-core/skills/README.md +16 -0
- package/.merlin-core/skills/domain/azure-cloud/SKILL.md +211 -0
- package/.merlin-core/skills/domain/azure-cloud/references/appinsights-instrumentation.md +63 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-compliance.md +99 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-cost-optimization.md +419 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-deploy.md +82 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-diagnostics.md +130 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-prepare.md +134 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-quotas.md +290 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-rbac.md +11 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-resource-lookup.md +97 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-resource-visualizer.md +178 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-storage.md +91 -0
- package/.merlin-core/skills/domain/azure-cloud/references/azure-validate.md +58 -0
- package/.merlin-core/skills/domain/azure-cloud/references/entra-app-registration.md +192 -0
- package/.merlin-core/skills/domain/browser-automation/SKILL.md +311 -0
- package/.merlin-core/skills/domain/browser-automation/references/agent-browser-skill.md +632 -0
- package/.merlin-core/skills/domain/browser-automation/references/authentication.md +308 -0
- package/.merlin-core/skills/domain/browser-automation/references/commands.md +266 -0
- package/.merlin-core/skills/domain/browser-automation/references/profiling.md +120 -0
- package/.merlin-core/skills/domain/browser-automation/references/proxy-support.md +194 -0
- package/.merlin-core/skills/domain/browser-automation/references/session-management.md +194 -0
- package/.merlin-core/skills/domain/browser-automation/references/snapshot-refs.md +196 -0
- package/.merlin-core/skills/domain/browser-automation/references/video-recording.md +173 -0
- package/.merlin-core/skills/domain/browser-automation/templates/authenticated-session.sh +105 -0
- package/.merlin-core/skills/domain/browser-automation/templates/capture-workflow.sh +69 -0
- package/.merlin-core/skills/domain/browser-automation/templates/form-automation.sh +62 -0
- package/.merlin-core/skills/domain/digital-marketing/SKILL.md +292 -0
- package/.merlin-core/skills/domain/digital-marketing/references/content-strategy.md +320 -0
- package/.merlin-core/skills/domain/digital-marketing/references/copy-formats.md +298 -0
- package/.merlin-core/skills/domain/digital-marketing/references/copy-methodology.md +180 -0
- package/.merlin-core/skills/domain/digital-marketing/references/email-sequences.md +135 -0
- package/.merlin-core/skills/domain/digital-marketing/references/launch-strategy.md +213 -0
- package/.merlin-core/skills/domain/digital-marketing/references/pricing-strategy.md +160 -0
- package/.merlin-core/skills/domain/digital-marketing/references/programmatic-seo.md +237 -0
- package/.merlin-core/skills/domain/digital-marketing/references/revops-lifecycle.md +170 -0
- package/.merlin-core/skills/domain/digital-marketing/references/revops-operations.md +167 -0
- package/.merlin-core/skills/domain/digital-marketing/references/schema-markup.md +190 -0
- package/.merlin-core/skills/domain/digital-marketing/references/strategy-frameworks.md +324 -0
- package/.merlin-core/skills/domain/digital-marketing/references/traffic-management.md +350 -0
- package/.merlin-core/skills/domain/expo-native-ui/SKILL.md +348 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/animations.md +220 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/api-routes.md +361 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/cicd-workflows.md +84 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/controls.md +266 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/data-fetching.md +553 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/deployment-stores.md +1353 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/deployment.md +183 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/dev-client.md +166 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/dom-components.md +410 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/form-sheet.md +253 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/gradients.md +117 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/icons.md +218 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/media.md +245 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/platform-native.md +75 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/route-structure.md +229 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/search.md +249 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/storage.md +121 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/tabs.md +433 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/tailwind-native.md +473 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/toolbar-and-headers.md +284 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/upgrading-guides.md +674 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/upgrading.md +127 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/visual-effects.md +199 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/webgpu-three.md +605 -0
- package/.merlin-core/skills/domain/expo-native-ui/references/zoom-transitions.md +161 -0
- package/.merlin-core/skills/domain/marketing-ops/SKILL.md +117 -0
- package/.merlin-core/skills/domain/marketing-ops/references/_index.md +78 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ad-creative/references/generative-tools.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ad-creative/references/platform-specs.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ad-creative.md +251 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/ad-copy-templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/audience-targeting.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/conversion-tracking.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/platform-setup-checklists.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads.md +322 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo/references/content-patterns.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo/references/content-types.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo/references/platform-ranking-factors.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo.md +388 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/apple-specs.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/benchmarks.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/google-play-specs.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/report-template.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/scoring-criteria.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso.md +316 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/co-marketing.md +305 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/community-marketing.md +169 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitor-profiling/references/templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitor-profiling/references/tool-reference.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitor-profiling.md +442 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitors/references/content-architecture.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitors/references/templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitors.md +281 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/content-strategy.md +16 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions/references/directory-list.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions/references/positioning-variations.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions/references/submission-tracker-template.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions.md +396 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/free-tools/references/tool-types.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/free-tools.md +196 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/image/references/ai-image-prompting.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/image.md +352 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/launch.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/lead-magnets/references/benchmarks.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/lead-magnets/references/format-guide.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/lead-magnets.md +333 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/programmatic-seo.md +16 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/schema.md +16 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/seo-audit/references/ai-writing-detection.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/seo-audit/references/international-seo.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/seo-audit.md +546 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture/references/mermaid-templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture/references/navigation-patterns.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture/references/site-type-templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture.md +371 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/platform-limits.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/platforms.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/post-templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/reverse-engineering.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/short-form-video.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/social.md +431 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/video/references/ai-video-prompting.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/acquire/video.md +353 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/ab-testing/references/sample-size-guide.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/ab-testing/references/test-templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/ab-testing.md +379 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics/references/event-library.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics/references/ga4-implementation.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics/references/gtm-implementation.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics.md +323 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/copy-editing.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/copywriting.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/cro/references/experiments.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/cro/references/form.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/cro.md +211 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/emails.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/paywalls/references/experiments.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/paywalls.md +255 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/popups.md +518 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/pricing.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/deck-frameworks.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/demo-scripts.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/objection-library.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/one-pager-templates.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement.md +371 -0
- package/.merlin-core/skills/domain/marketing-ops/references/activate/signup.md +406 -0
- package/.merlin-core/skills/domain/marketing-ops/references/expand/co-marketing.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/expand/community-marketing.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/expand/referrals/references/affiliate-programs.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/expand/referrals/references/program-examples.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/expand/referrals.md +278 -0
- package/.merlin-core/skills/domain/marketing-ops/references/foundation/customer-research/references/source-guides.md +425 -0
- package/.merlin-core/skills/domain/marketing-ops/references/foundation/customer-research.md +284 -0
- package/.merlin-core/skills/domain/marketing-ops/references/foundation/marketing-ideas/references/ideas-by-category.md +216 -0
- package/.merlin-core/skills/domain/marketing-ops/references/foundation/marketing-ideas.md +188 -0
- package/.merlin-core/skills/domain/marketing-ops/references/foundation/marketing-psychology.md +532 -0
- package/.merlin-core/skills/domain/marketing-ops/references/foundation/product-marketing.md +276 -0
- package/.merlin-core/skills/domain/marketing-ops/references/retain/churn-prevention/references/cancel-flow-patterns.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/retain/churn-prevention/references/dunning-playbook.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/retain/churn-prevention.md +442 -0
- package/.merlin-core/skills/domain/marketing-ops/references/retain/onboarding/references/experiments.md +19 -0
- package/.merlin-core/skills/domain/marketing-ops/references/retain/onboarding.md +243 -0
- package/.merlin-core/skills/domain/marketing-ops/references/retain/revops-lifecycle.md +18 -0
- package/.merlin-core/skills/domain/marketing-ops/references/retain/revops-operations.md +18 -0
- package/.merlin-core/skills/domain/n8n-automation/SKILL.md +149 -0
- package/.merlin-core/skills/domain/n8n-automation/references/code-javascript.md +3744 -0
- package/.merlin-core/skills/domain/n8n-automation/references/code-python.md +3293 -0
- package/.merlin-core/skills/domain/n8n-automation/references/expression-syntax.md +1662 -0
- package/.merlin-core/skills/domain/n8n-automation/references/mcp-tools-expert.md +2111 -0
- package/.merlin-core/skills/domain/n8n-automation/references/node-configuration.md +2523 -0
- package/.merlin-core/skills/domain/n8n-automation/references/validation-expert.md +2491 -0
- package/.merlin-core/skills/domain/n8n-automation/references/workflow-patterns.md +4624 -0
- package/.merlin-core/skills/domain/ops-manual/SKILL.md +225 -0
- package/.merlin-core/skills/domain/ops-manual/references/elicitation-questions.md +141 -0
- package/.merlin-core/skills/domain/ops-manual/references/external-skills-registry.md +63 -0
- package/.merlin-core/skills/domain/ops-manual/references/operations-template.yaml +132 -0
- package/.merlin-core/skills/domain/remotion-best-practices/SKILL.md +99 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/3d.md +86 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/animations.md +27 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/assets.md +78 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/audio.md +172 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/calculate-metadata.md +131 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/can-decode.md +75 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/charts.md +68 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/compositions.md +154 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/display-captions.md +126 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/extract-frames.md +229 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/fonts.md +152 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/get-video-duration.md +58 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/gifs.md +144 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/images.md +134 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/import-srt-captions.md +67 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/lottie.md +70 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/maps.md +414 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/measuring-text.md +143 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/parameters.md +109 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/sequencing.md +118 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/tailwind.md +11 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/text-animations.md +20 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/timing.md +179 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/transcribe-captions.md +19 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/transitions.md +137 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/transparent-videos.md +106 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/trimming.md +51 -0
- package/.merlin-core/skills/domain/remotion-best-practices/rules/videos.md +171 -0
- package/.merlin-core/skills/domain/resend-email/SKILL.md +377 -0
- package/.merlin-core/skills/general/adversarial-review/SKILL.md +144 -0
- package/.merlin-core/skills/general/api-design/SKILL.md +513 -0
- package/.merlin-core/skills/general/apify-scrape/SKILL.md +137 -0
- package/.merlin-core/skills/general/apify-scrape/scripts/apify-scrape.sh +68 -0
- package/.merlin-core/skills/general/backup/SKILL.md +87 -0
- package/.merlin-core/skills/general/blkskrn/SKILL.md +392 -0
- package/.merlin-core/skills/general/blkskrn/references/animation-patterns.md +521 -0
- package/.merlin-core/skills/general/blkskrn/references/design-system.md +637 -0
- package/.merlin-core/skills/general/blkskrn/references/html-templates.md +440 -0
- package/.merlin-core/skills/general/blkskrn/references/presenter-template.md +45 -0
- package/.merlin-core/skills/general/blkskrn/references/slide-types.md +424 -0
- package/.merlin-core/skills/general/blkskrn/scripts/canvas-manager.js +502 -0
- package/.merlin-core/skills/general/blkskrn/scripts/presenter.js +90 -0
- package/.merlin-core/skills/general/blkskrn/templates/presenter.html +273 -0
- package/.merlin-core/skills/general/blkskrn/templates/slide-base.html +277 -0
- package/.merlin-core/skills/general/blkskrn/templates/viewer.html +165 -0
- package/.merlin-core/skills/general/browser-takeover/SKILL.md +53 -0
- package/.merlin-core/skills/general/claude-api/SKILL.md +90 -0
- package/.merlin-core/skills/general/code-javascript/SKILL.md +268 -0
- package/.merlin-core/skills/general/code-python/SKILL.md +424 -0
- package/.merlin-core/skills/general/code-style/SKILL.md +97 -0
- package/.merlin-core/skills/general/code-typescript/SKILL.md +361 -0
- package/.merlin-core/skills/general/cold-email/SKILL.md +164 -0
- package/.merlin-core/skills/general/cold-email/references/benchmarks.md +18 -0
- package/.merlin-core/skills/general/cold-email/references/follow-up-sequences.md +18 -0
- package/.merlin-core/skills/general/cold-email/references/frameworks.md +18 -0
- package/.merlin-core/skills/general/cold-email/references/personalization.md +18 -0
- package/.merlin-core/skills/general/cold-email/references/subject-lines.md +18 -0
- package/.merlin-core/skills/general/container-security/SKILL.md +462 -0
- package/.merlin-core/skills/general/context-management/SKILL.md +79 -0
- package/.merlin-core/skills/general/copy-editing/SKILL.md +501 -0
- package/.merlin-core/skills/general/copy-editing/references/checklist.md +18 -0
- package/.merlin-core/skills/general/copy-editing/references/content-refresh.md +18 -0
- package/.merlin-core/skills/general/copy-editing/references/plain-english-alternatives.md +18 -0
- package/.merlin-core/skills/general/copywriting/SKILL.md +294 -0
- package/.merlin-core/skills/general/copywriting/references/copy-frameworks.md +392 -0
- package/.merlin-core/skills/general/copywriting/references/natural-transitions.md +276 -0
- package/.merlin-core/skills/general/database/SKILL.md +561 -0
- package/.merlin-core/skills/general/database/references/postgres-concurrency.md +182 -0
- package/.merlin-core/skills/general/database/references/postgres-connections.md +97 -0
- package/.merlin-core/skills/general/database/references/postgres-data-patterns.md +159 -0
- package/.merlin-core/skills/general/database/references/postgres-monitoring.md +136 -0
- package/.merlin-core/skills/general/database/references/postgres-rls.md +140 -0
- package/.merlin-core/skills/general/database-provision/SKILL.md +56 -0
- package/.merlin-core/skills/general/deploy/SKILL.md +65 -0
- package/.merlin-core/skills/general/design-inspiration/SKILL.md +146 -0
- package/.merlin-core/skills/general/design-palette/SKILL.md +99 -0
- package/.merlin-core/skills/general/design-palette/references/full-palettes.md +144 -0
- package/.merlin-core/skills/general/design-system/SKILL.md +94 -0
- package/.merlin-core/skills/general/design-typography/SKILL.md +115 -0
- package/.merlin-core/skills/general/design-typography/references/full-pairings.md +144 -0
- package/.merlin-core/skills/general/design-ux-patterns/SKILL.md +155 -0
- package/.merlin-core/skills/general/design-ux-patterns/references/charts-data-guidelines.md +197 -0
- package/.merlin-core/skills/general/design-ux-patterns/references/landing-patterns.md +199 -0
- package/.merlin-core/skills/general/design-ux-patterns/references/professional-ui-checklist.md +56 -0
- package/.merlin-core/skills/general/design-ux-patterns/references/style-catalog.md +89 -0
- package/.merlin-core/skills/general/design-ux-patterns/references/ux-guidelines.md +837 -0
- package/.merlin-core/skills/general/discover-cloud/SKILL.md +108 -0
- package/.merlin-core/skills/general/doc-sync/SKILL.md +52 -0
- package/.merlin-core/skills/general/document-sharding/SKILL.md +53 -0
- package/.merlin-core/skills/general/docx/SKILL.md +418 -0
- package/.merlin-core/skills/general/docx/references/windows-setup.md +27 -0
- package/.merlin-core/skills/general/docx/scripts/__init__.py +1 -0
- package/.merlin-core/skills/general/docx/scripts/accept_changes.py +135 -0
- package/.merlin-core/skills/general/docx/scripts/comment.py +318 -0
- package/.merlin-core/skills/general/docx/scripts/office/__init__.py +0 -0
- package/.merlin-core/skills/general/docx/scripts/office/helpers/__init__.py +0 -0
- package/.merlin-core/skills/general/docx/scripts/office/helpers/merge_runs.py +199 -0
- package/.merlin-core/skills/general/docx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/.merlin-core/skills/general/docx/scripts/office/pack.py +159 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/.merlin-core/skills/general/docx/scripts/office/soffice.py +183 -0
- package/.merlin-core/skills/general/docx/scripts/office/unpack.py +132 -0
- package/.merlin-core/skills/general/docx/scripts/office/validate.py +111 -0
- package/.merlin-core/skills/general/docx/scripts/office/validators/__init__.py +15 -0
- package/.merlin-core/skills/general/docx/scripts/office/validators/base.py +847 -0
- package/.merlin-core/skills/general/docx/scripts/office/validators/docx.py +446 -0
- package/.merlin-core/skills/general/docx/scripts/office/validators/pptx.py +275 -0
- package/.merlin-core/skills/general/docx/scripts/office/validators/redlining.py +247 -0
- package/.merlin-core/skills/general/docx/scripts/templates/comments.xml +3 -0
- package/.merlin-core/skills/general/docx/scripts/templates/commentsExtended.xml +3 -0
- package/.merlin-core/skills/general/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/.merlin-core/skills/general/docx/scripts/templates/commentsIds.xml +3 -0
- package/.merlin-core/skills/general/docx/scripts/templates/people.xml +3 -0
- package/.merlin-core/skills/general/elicitation/SKILL.md +188 -0
- package/.merlin-core/skills/general/engineering-audit/SKILL.md +122 -0
- package/.merlin-core/skills/general/find-and-edit/SKILL.md +102 -0
- package/.merlin-core/skills/general/first-party-docs/SKILL.md +51 -0
- package/.merlin-core/skills/general/frontend-design/SKILL.md +204 -0
- package/.merlin-core/skills/general/guardrails/SKILL.md +144 -0
- package/.merlin-core/skills/general/image-gen/SKILL.md +49 -0
- package/.merlin-core/skills/general/learning-capture/SKILL.md +192 -0
- package/.merlin-core/skills/general/lgpd-compliance-audit/SKILL.md +448 -0
- package/.merlin-core/skills/general/load-testing/SKILL.md +114 -0
- package/.merlin-core/skills/general/load-testing/docker/Dockerfile.dashboard +21 -0
- package/.merlin-core/skills/general/load-testing/docker/docker-compose.locust.yml +39 -0
- package/.merlin-core/skills/general/load-testing/requirements.txt +1 -0
- package/.merlin-core/skills/general/load-testing/scripts/compare_baseline.py +172 -0
- package/.merlin-core/skills/general/load-testing/scripts/run_local.py +245 -0
- package/.merlin-core/skills/general/load-testing/templates/load_shape_stepped.py +35 -0
- package/.merlin-core/skills/general/load-testing/templates/locustfile_dashboard.py +47 -0
- package/.merlin-core/skills/general/load-testing/templates/threshold_hook.py +36 -0
- package/.merlin-core/skills/general/mage-beauty/SKILL.md +89 -0
- package/.merlin-core/skills/general/mage-beauty/references/anti-patterns.md +148 -0
- package/.merlin-core/skills/general/mage-beauty/references/color-and-contrast.md +87 -0
- package/.merlin-core/skills/general/mage-beauty/references/interaction-design.md +99 -0
- package/.merlin-core/skills/general/mage-beauty/references/motion-design.md +90 -0
- package/.merlin-core/skills/general/mage-beauty/references/remotion-bridge.md +187 -0
- package/.merlin-core/skills/general/mage-beauty/references/responsive-and-multi-format.md +98 -0
- package/.merlin-core/skills/general/mage-beauty/references/spatial-design.md +88 -0
- package/.merlin-core/skills/general/mage-beauty/references/typography.md +60 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-adapt.md +102 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-animate.md +97 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-audit.md +99 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-bolder.md +94 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-cinematic.md +128 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-clarify.md +107 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-colorize.md +106 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-critique.md +88 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-delight.md +98 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-distill.md +97 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-harden.md +79 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-layout.md +104 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-onboard.md +98 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-optimize.md +124 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-overdrive.md +105 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-polish.md +91 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-quieter.md +95 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-rebrand.md +127 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-shape.md +160 -0
- package/.merlin-core/skills/general/mage-beauty/references/verb-typeset.md +109 -0
- package/.merlin-core/skills/general/mage-beauty/references/voice-and-microcopy.md +137 -0
- package/.merlin-core/skills/general/mcp-builder/SKILL.md +92 -0
- package/.merlin-core/skills/general/network-debug/SKILL.md +51 -0
- package/.merlin-core/skills/general/next-best-practices/SKILL.md +177 -0
- package/.merlin-core/skills/general/next-best-practices/references/async-patterns.md +87 -0
- package/.merlin-core/skills/general/next-best-practices/references/bundling.md +182 -0
- package/.merlin-core/skills/general/next-best-practices/references/data-patterns.md +306 -0
- package/.merlin-core/skills/general/next-best-practices/references/debug-tricks.md +125 -0
- package/.merlin-core/skills/general/next-best-practices/references/directives.md +74 -0
- package/.merlin-core/skills/general/next-best-practices/references/error-handling.md +232 -0
- package/.merlin-core/skills/general/next-best-practices/references/file-conventions.md +141 -0
- package/.merlin-core/skills/general/next-best-practices/references/font.md +257 -0
- package/.merlin-core/skills/general/next-best-practices/references/functions.md +108 -0
- package/.merlin-core/skills/general/next-best-practices/references/hydration-error.md +88 -0
- package/.merlin-core/skills/general/next-best-practices/references/image.md +179 -0
- package/.merlin-core/skills/general/next-best-practices/references/metadata.md +296 -0
- package/.merlin-core/skills/general/next-best-practices/references/parallel-routes.md +298 -0
- package/.merlin-core/skills/general/next-best-practices/references/route-handlers.md +146 -0
- package/.merlin-core/skills/general/next-best-practices/references/rsc-boundaries.md +164 -0
- package/.merlin-core/skills/general/next-best-practices/references/runtime-selection.md +40 -0
- package/.merlin-core/skills/general/next-best-practices/references/scripts.md +141 -0
- package/.merlin-core/skills/general/next-best-practices/references/self-hosting.md +384 -0
- package/.merlin-core/skills/general/next-best-practices/references/suspense-boundaries.md +67 -0
- package/.merlin-core/skills/general/next-steps/SKILL.md +43 -0
- package/.merlin-core/skills/general/party-mode/SKILL.md +57 -0
- package/.merlin-core/skills/general/pdf/SKILL.md +298 -0
- package/.merlin-core/skills/general/pdf/references/forms.md +312 -0
- package/.merlin-core/skills/general/pdf/references/reference.md +640 -0
- package/.merlin-core/skills/general/pdf/references/windows-setup.md +40 -0
- package/.merlin-core/skills/general/pdf/scripts/check_bounding_boxes.py +65 -0
- package/.merlin-core/skills/general/pdf/scripts/check_fillable_fields.py +11 -0
- package/.merlin-core/skills/general/pdf/scripts/convert_pdf_to_images.py +33 -0
- package/.merlin-core/skills/general/pdf/scripts/create_validation_image.py +37 -0
- package/.merlin-core/skills/general/pdf/scripts/extract_form_field_info.py +122 -0
- package/.merlin-core/skills/general/pdf/scripts/extract_form_structure.py +115 -0
- package/.merlin-core/skills/general/pdf/scripts/fill_fillable_fields.py +98 -0
- package/.merlin-core/skills/general/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
- package/.merlin-core/skills/general/pptx/SKILL.md +133 -0
- package/.merlin-core/skills/general/pptx/references/editing.md +213 -0
- package/.merlin-core/skills/general/pptx/references/pptxgenjs.md +581 -0
- package/.merlin-core/skills/general/pptx/references/windows-setup.md +27 -0
- package/.merlin-core/skills/general/pptx/scripts/__init__.py +0 -0
- package/.merlin-core/skills/general/pptx/scripts/add_slide.py +195 -0
- package/.merlin-core/skills/general/pptx/scripts/clean.py +286 -0
- package/.merlin-core/skills/general/pptx/scripts/thumbnail.py +289 -0
- package/.merlin-core/skills/general/property-testing/SKILL.md +214 -0
- package/.merlin-core/skills/general/purge-leaked-secret/SKILL.md +383 -0
- package/.merlin-core/skills/general/reflection/SKILL.md +100 -0
- package/.merlin-core/skills/general/secret-safe-commit/SKILL.md +246 -0
- package/.merlin-core/skills/general/secret-safe-commit/templates/.gitleaks.toml +91 -0
- package/.merlin-core/skills/general/secret-safe-commit/templates/.pre-commit-config.yaml +57 -0
- package/.merlin-core/skills/general/secret-safe-commit/templates/secret-scan.yml +48 -0
- package/.merlin-core/skills/general/semantic-search/SKILL.md +79 -0
- package/.merlin-core/skills/general/skill-creator/SKILL.md +342 -0
- package/.merlin-core/skills/general/skill-creator/agents/analyzer.md +283 -0
- package/.merlin-core/skills/general/skill-creator/agents/comparator.md +211 -0
- package/.merlin-core/skills/general/skill-creator/agents/grader.md +227 -0
- package/.merlin-core/skills/general/skill-creator/assets/eval_review.html +146 -0
- package/.merlin-core/skills/general/skill-creator/eval-viewer/generate_review.py +471 -0
- package/.merlin-core/skills/general/skill-creator/eval-viewer/viewer.html +1325 -0
- package/.merlin-core/skills/general/skill-creator/references/schemas.md +439 -0
- package/.merlin-core/skills/general/skill-creator/scripts/__init__.py +0 -0
- package/.merlin-core/skills/general/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/.merlin-core/skills/general/skill-creator/scripts/generate_report.py +326 -0
- package/.merlin-core/skills/general/skill-creator/scripts/improve_description.py +247 -0
- package/.merlin-core/skills/general/skill-creator/scripts/package_skill.py +136 -0
- package/.merlin-core/skills/general/skill-creator/scripts/quick_validate.py +103 -0
- package/.merlin-core/skills/general/skill-creator/scripts/run_eval.py +310 -0
- package/.merlin-core/skills/general/skill-creator/scripts/run_loop.py +328 -0
- package/.merlin-core/skills/general/skill-creator/scripts/utils.py +47 -0
- package/.merlin-core/skills/general/start-here/SKILL.md +63 -0
- package/.merlin-core/skills/general/start-here/recipes.json +758 -0
- package/.merlin-core/skills/general/start-here/recipes.schema.json +57 -0
- package/.merlin-core/skills/general/static-analysis/SKILL.md +151 -0
- package/.merlin-core/skills/general/tailwind-design-system/SKILL.md +201 -0
- package/.merlin-core/skills/general/tailwind-design-system/references/advanced-v4.md +152 -0
- package/.merlin-core/skills/general/tailwind-design-system/references/component-patterns.md +353 -0
- package/.merlin-core/skills/general/teach-method/SKILL.md +86 -0
- package/.merlin-core/skills/general/team-execution/SKILL.md +67 -0
- package/.merlin-core/skills/general/testing/SKILL.md +412 -0
- package/.merlin-core/skills/general/token-economy/SKILL.md +55 -0
- package/.merlin-core/skills/general/vps-security-hardening/SKILL.md +406 -0
- package/.merlin-core/skills/general/web-quality/SKILL.md +180 -0
- package/.merlin-core/skills/general/webapp-testing/SKILL.md +153 -0
- package/.merlin-core/skills/general/webapp-testing/scripts/screenshot_compare.py +72 -0
- package/.merlin-core/skills/general/webapp-testing/scripts/with_server.py +103 -0
- package/.merlin-core/skills/general/xlsx/SKILL.md +167 -0
- package/.merlin-core/skills/general/xlsx/references/nodejs-sheetjs-styled-reports.md +141 -0
- package/.merlin-core/skills/general/xlsx/references/windows-setup.md +17 -0
- package/.merlin-core/skills/general/xlsx/scripts/recalc.py +184 -0
- package/.merlin-core/skills/general/xlsx/scripts/styled-report.js +130 -0
- package/.merlin-core/skills/general/yolo-mode/SKILL.md +60 -0
- package/.merlin-core/skills/general/youtube-transcript/SKILL.md +177 -0
- package/.merlin-core/skills/general/youtube-transcript/scripts/fetch_transcript.py +188 -0
- package/.merlin-core/skills/general/youtube-transcript/scripts/gladia_transcribe.mjs +230 -0
- package/.merlin-core/tools/commands/activate.js +72 -0
- package/.merlin-core/tools/commands/archive-thoughts.js +181 -0
- package/.merlin-core/tools/commands/backup.js +156 -0
- package/.merlin-core/tools/commands/certify-process.js +196 -0
- package/.merlin-core/tools/commands/convert.js +87 -0
- package/.merlin-core/tools/commands/cron.js +147 -0
- package/.merlin-core/tools/commands/disable.js +73 -0
- package/.merlin-core/tools/commands/doc-sync.js +127 -0
- package/.merlin-core/tools/commands/eval-skill.js +193 -0
- package/.merlin-core/tools/commands/frontmatter.js +49 -0
- package/.merlin-core/tools/commands/heartbeat.js +43 -0
- package/.merlin-core/tools/commands/index-thoughts.js +35 -0
- package/.merlin-core/tools/commands/install-remote-approve.js +184 -0
- package/.merlin-core/tools/commands/install.js +81 -0
- package/.merlin-core/tools/commands/lib/__verify__/diff-reports.js +170 -0
- package/.merlin-core/tools/commands/lib/fs-safe.js +186 -0
- package/.merlin-core/tools/commands/lib/preflight.js +607 -0
- package/.merlin-core/tools/commands/lib/preserve.js +232 -0
- package/.merlin-core/tools/commands/lib/project-config.template.yaml +69 -0
- package/.merlin-core/tools/commands/lib/report.js +231 -0
- package/.merlin-core/tools/commands/lib/settings-merge.js +134 -0
- package/.merlin-core/tools/commands/license.js +52 -0
- package/.merlin-core/tools/commands/list.js +125 -0
- package/.merlin-core/tools/commands/migrate-alkimia.js +271 -0
- package/.merlin-core/tools/commands/modules.js +68 -0
- package/.merlin-core/tools/commands/provision.js +83 -0
- package/.merlin-core/tools/commands/prune-feedback.js +114 -0
- package/.merlin-core/tools/commands/run-process.js +28 -0
- package/.merlin-core/tools/commands/state.js +79 -0
- package/.merlin-core/tools/commands/sync-bridges.js +197 -0
- package/.merlin-core/tools/commands/upgrade.js +1135 -0
- package/.merlin-core/tools/commands/validate-recipes.js +218 -0
- package/.merlin-core/tools/commands/validate.js +159 -0
- package/.merlin-core/tools/commands/yolo.js +82 -0
- package/.merlin-core/tools/compose-rules.mjs +179 -0
- package/.merlin-core/tools/disable-module.mjs +150 -0
- package/.merlin-core/tools/lib/deployer.mjs +131 -0
- package/.merlin-core/tools/lib/modules-activation.mjs +225 -0
- package/.merlin-core/tools/merlin-tools.js +153 -0
- package/.merlin-core/tools/migrate-frontmatter-v3.js +192 -0
- package/.merlin-core/tools/modules-catalog.mjs +174 -0
- package/.merlin-core/tools/provision-module.mjs +191 -0
- package/.merlin-core/tools/verify-module.mjs +99 -0
- package/.merlin-core/tools/vps-security-audit.sh +234 -0
- package/INSTALL.md +312 -0
- package/LICENSE +118 -0
- package/PRIVACY-LICENSING.md +65 -0
- package/README.md +391 -0
- package/bin/README.md +15 -0
- package/bin/convert-to-merlin.sh +109 -0
- package/bin/fleet-patch-hooks.sh +144 -0
- package/bin/fleet-patch-v3-fixes.sh +127 -0
- package/bin/merlin-init.js +232 -0
- package/bin/merlin.js +321 -0
- package/package.json +127 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Slash Commands
|
|
2
|
+
|
|
3
|
+
The commands module provides a comprehensive set of slash commands organized by functional category. Commands span research and analysis, planning and design, implementation and execution, git operations, session management, and code review workflows.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- **research/** - Commands for information gathering, analysis, and exploration (`/research`, `/analyze-issue`)
|
|
8
|
+
- **planning/** - Commands for design, planning, and architecture decisions
|
|
9
|
+
- **implementation/** - Commands for coding, testing, and deployment (`/implement`, `/oneshot`, `/tdd`)
|
|
10
|
+
- **git/** - Commands for version control workflows and operations
|
|
11
|
+
- **session/** - Commands for session management and context switching (`/fast-start`, `/handoff`, `/resume-handoff`, `/check-objectives`, `/conclude`)
|
|
12
|
+
- **review/** - Commands for code review and quality assessment (`/review`, `/debug`, `/doubts`, `/check`)
|
|
13
|
+
- **special/** - Meta and alignment commands (`/elicit`, `/common-ground`, `/skill-audit`)
|
|
14
|
+
|
|
15
|
+
## Related
|
|
16
|
+
|
|
17
|
+
- [Skills](../skills/README.md)
|
|
18
|
+
- [Development](../development/README.md)
|
|
19
|
+
- [Schemas](../schemas/README.md)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Override agent authority for rapid prototyping
|
|
3
|
+
model: opus
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Founder Mode
|
|
7
|
+
|
|
8
|
+
Temporarily override Agent Authority (Constitution Article II) for rapid prototyping by a single operator.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- Solo founder building an MVP
|
|
13
|
+
- Emergency hotfixes where delegation overhead is unacceptable
|
|
14
|
+
- Rapid prototyping sessions where switching agents would slow you down
|
|
15
|
+
|
|
16
|
+
## What Changes
|
|
17
|
+
|
|
18
|
+
In Founder Mode:
|
|
19
|
+
|
|
20
|
+
- **Article II (Agent Authority)** is RELAXED: you may perform tasks normally reserved for specialized agents
|
|
21
|
+
- **Article III (Spec-Driven Development)** is RELAXED: you may code without a full plan for small changes
|
|
22
|
+
- **All other Constitution articles remain enforced**, especially:
|
|
23
|
+
- Article V (Quality First): tests and quality gates still apply
|
|
24
|
+
- Article VII (Human Gates): HIGH-stake actions still require approval
|
|
25
|
+
|
|
26
|
+
## Activation
|
|
27
|
+
|
|
28
|
+
When the user invokes `/founder-mode`, respond:
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
Founder Mode: ACTIVE
|
|
32
|
+
Duration: This session only
|
|
33
|
+
|
|
34
|
+
Relaxed:
|
|
35
|
+
- Agent Authority (Article II) - you may act across agent boundaries
|
|
36
|
+
- Spec-Driven Development (Article III) - plan-optional for <3 file changes
|
|
37
|
+
|
|
38
|
+
Still Enforced:
|
|
39
|
+
- Quality First (Article V)
|
|
40
|
+
- Human Gates (Article VII)
|
|
41
|
+
- No Invention (Article IV)
|
|
42
|
+
|
|
43
|
+
Type /founder-mode off to deactivate.
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Rules
|
|
47
|
+
|
|
48
|
+
- Founder Mode is session-scoped only. It does NOT persist across sessions.
|
|
49
|
+
- Log all actions taken under Founder Mode to `.merlin/founder-mode-log.md`
|
|
50
|
+
- If a change touches more than 5 files, recommend creating a plan anyway
|
|
51
|
+
- Never auto-activate. Only activate on explicit `/founder-mode` command.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Create well-structured git commits with mandatory pre-flight secret scan. Alias to /safe-commit (kept for backwards compatibility).
|
|
3
|
+
model: sonnet
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Commit (alias of /safe-commit)
|
|
7
|
+
|
|
8
|
+
> **Note:** As of 2026-04-27, every commit in Merlin projects passes through
|
|
9
|
+
> gitleaks pre-flight automatically. The `/commit` command is an alias for
|
|
10
|
+
> `/safe-commit`. The behavior is the same — both invoke the safe path with
|
|
11
|
+
> mandatory secret scanning before any commit is written.
|
|
12
|
+
>
|
|
13
|
+
> See [`safe-commit`](./safe-commit.md) for the full process.
|
|
14
|
+
>
|
|
15
|
+
> **TL;DR:**
|
|
16
|
+
>
|
|
17
|
+
> 1. Step 0 — `gitleaks protect --source . --staged` (abort on finding)
|
|
18
|
+
> 2. Step 1 — Read `operations.git` config
|
|
19
|
+
> 3. Step 2 — `git status` + `git diff --staged`
|
|
20
|
+
> 4. Step 3 — Draft message (conventional / jira / plain)
|
|
21
|
+
> 5. Step 4 — Present + commit
|
|
22
|
+
>
|
|
23
|
+
> Use `--skip-secret-scan` ONLY for legitimate edge cases (test fixtures, docs,
|
|
24
|
+
> migration cleanup, false positives) and ALWAYS provide a `secret-scan-skip:`
|
|
25
|
+
> reason in the commit body.
|
|
26
|
+
>
|
|
27
|
+
> If gitleaks is not installed in the project, the **`secret-safe-commit`**
|
|
28
|
+
> skill provides a one-command bootstrap. Reactive runbook for already-leaked
|
|
29
|
+
> secrets: **`purge-leaked-secret`** skill.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
For new commits, prefer invoking `/safe-commit` directly. This file exists so
|
|
34
|
+
that historic muscle memory and existing tooling that calls `/commit` continue
|
|
35
|
+
to work — but the behavior is now identical to `/safe-commit`.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Generate comprehensive PR descriptions from branch changes
|
|
3
|
+
model: sonnet
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Describe PR
|
|
7
|
+
|
|
8
|
+
Generate a comprehensive pull request description from the current branch's changes.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
1. Determine base branch (main/master/develop)
|
|
13
|
+
2. Run `git log [base]..HEAD` to see all commits
|
|
14
|
+
3. Run `git diff [base]...HEAD` to see all changes
|
|
15
|
+
4. Analyze the full scope of changes
|
|
16
|
+
|
|
17
|
+
## Output Format
|
|
18
|
+
|
|
19
|
+
```markdown
|
|
20
|
+
## Summary
|
|
21
|
+
|
|
22
|
+
[1-3 bullet points describing the changes]
|
|
23
|
+
|
|
24
|
+
## Changes
|
|
25
|
+
|
|
26
|
+
- [File-level changes grouped by category]
|
|
27
|
+
|
|
28
|
+
## Testing
|
|
29
|
+
|
|
30
|
+
- [ ] Automated tests pass
|
|
31
|
+
- [ ] [Manual verification steps]
|
|
32
|
+
|
|
33
|
+
## Screenshots
|
|
34
|
+
|
|
35
|
+
[If UI changes, note where screenshots should go]
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Rules
|
|
39
|
+
|
|
40
|
+
- Include ALL commits, not just the latest
|
|
41
|
+
- Group changes logically, not by file
|
|
42
|
+
- Mention breaking changes prominently
|
|
43
|
+
- Link to relevant tickets/stories if identifiable
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Create well-structured git commits with mandatory pre-flight secret scan (gitleaks). Aliased as /commit.
|
|
3
|
+
model: sonnet
|
|
4
|
+
aliases: [commit]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Safe Commit
|
|
8
|
+
|
|
9
|
+
Create a git commit AFTER running gitleaks on the staged diff. **Never commits
|
|
10
|
+
secrets to history.** Replaces the old plain `/commit` command — every commit
|
|
11
|
+
in Merlin projects now goes through this safe path.
|
|
12
|
+
|
|
13
|
+
## Process (executed in order — abort on any failure)
|
|
14
|
+
|
|
15
|
+
### Step 0 — Pre-flight secret scan (gitleaks)
|
|
16
|
+
|
|
17
|
+
This step runs FIRST, before any analysis or message drafting. The skill
|
|
18
|
+
`secret-safe-commit` provides the canonical implementation.
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# If gitleaks is not installed, install it first via the skill bootstrap:
|
|
22
|
+
# pip install pre-commit && pre-commit install
|
|
23
|
+
# (this also installs .pre-commit-config.yaml + .gitleaks.toml templates)
|
|
24
|
+
|
|
25
|
+
# Scan staged changes only (fast, < 2s for typical diffs):
|
|
26
|
+
gitleaks protect --source . --staged --redact --verbose
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**On finding(s) detected:**
|
|
30
|
+
|
|
31
|
+
1. **ABORT immediately** — do NOT proceed to draft a commit message
|
|
32
|
+
2. Show the user the exact rule + path + line where the leak was detected
|
|
33
|
+
3. Recommend invoking the **`purge-leaked-secret`** skill (the leaked credential
|
|
34
|
+
is now in your working tree, possibly already in history if a previous
|
|
35
|
+
`/commit --skip-secret-scan` was used)
|
|
36
|
+
4. Concrete next actions: `git restore --staged <file>` to unstage + rotate
|
|
37
|
+
credential at the upstream provider + add the file to `.gitignore`
|
|
38
|
+
|
|
39
|
+
**On clean scan:** continue to Step 1.
|
|
40
|
+
|
|
41
|
+
### Step 1 — Read operations config
|
|
42
|
+
|
|
43
|
+
Check `.merlin-core/project-config.yaml → operations.git`:
|
|
44
|
+
|
|
45
|
+
- `commit_convention` → conventional, jira, plain, custom
|
|
46
|
+
- `commit_prefix` → prepended to messages (e.g., Jira ticket)
|
|
47
|
+
- Missing config → default to conventional commits
|
|
48
|
+
|
|
49
|
+
### Step 2 — Inspect staged changes
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
git status
|
|
53
|
+
git diff --staged
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
If nothing is staged, suggest files to stage based on recent changes. **Never
|
|
57
|
+
auto-stage with `git add -A`** — risk of including secrets, large binaries, or
|
|
58
|
+
unrelated changes.
|
|
59
|
+
|
|
60
|
+
### Step 3 — Analyze and draft
|
|
61
|
+
|
|
62
|
+
Determine:
|
|
63
|
+
|
|
64
|
+
- **Type:** feat, fix, refactor, docs, test, chore, perf, ci, style, build, security
|
|
65
|
+
- **Scope:** affected component or area
|
|
66
|
+
- **Description:** concise summary of WHY (not what)
|
|
67
|
+
|
|
68
|
+
Draft message in the configured format (see Formats below).
|
|
69
|
+
|
|
70
|
+
### Step 4 — Present + commit
|
|
71
|
+
|
|
72
|
+
Show the drafted message to the user. On approval:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
git commit -m "<message>"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Pre-commit hooks (if configured via `operations.git.pre_commit_hooks`) run
|
|
79
|
+
automatically — **do not bypass with `--no-verify`**. The gitleaks step in
|
|
80
|
+
Step 0 is independent of any project-level pre-commit hooks (defense in depth).
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## The `--skip-secret-scan` flag (LAST RESORT — use rarely)
|
|
85
|
+
|
|
86
|
+
There are exactly 4 legitimate reasons to bypass the gitleaks pre-flight:
|
|
87
|
+
|
|
88
|
+
1. **Test fixtures with intentionally fake secrets** (test data with `EXAMPLE_KEY=` style values that match a regex but aren't real)
|
|
89
|
+
2. **Documentation showing example secret formats** (README explaining "API keys look like ghp_xxx...")
|
|
90
|
+
3. **Migrating away from a leaked secret** that's been rotated and now needs `git-filter-repo`-style purging (the old value will appear in `--filter` operations)
|
|
91
|
+
4. **gitleaks false positive** that's been added to `.gitleaks.toml` allowlist but cache hasn't refreshed
|
|
92
|
+
|
|
93
|
+
**When the user passes `--skip-secret-scan`:**
|
|
94
|
+
|
|
95
|
+
1. Print a prominent warning:
|
|
96
|
+
```
|
|
97
|
+
⚠️ SECRET SCAN BYPASSED — this commit will NOT be checked for leaked secrets.
|
|
98
|
+
Reason: <user must provide reason inline or in commit body>
|
|
99
|
+
```
|
|
100
|
+
2. **Require a reason** in the commit message body, prefixed `secret-scan-skip:`:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
feat(payments): add MP webhook validation
|
|
104
|
+
|
|
105
|
+
- Validate signatures with HMAC-SHA256
|
|
106
|
+
- Add timing-safe equal check
|
|
107
|
+
|
|
108
|
+
secret-scan-skip: test fixture in payments.spec.ts contains fake AWS key matching AKIA pattern
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
3. **Log the bypass** to `.merlin-core/thoughts/shared/incidents/secret-scan-bypass.log`
|
|
112
|
+
with timestamp, user, file list, reason
|
|
113
|
+
4. **Even with the flag:** still run the scan in CI via `.github/workflows/secret-scan.yml`
|
|
114
|
+
(the `secret-safe-commit` skill installs this) — bypass is only local, not project-wide
|
|
115
|
+
|
|
116
|
+
If the user invokes `--skip-secret-scan` without a reason, ABORT and ask for one.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Commit Message Formats
|
|
121
|
+
|
|
122
|
+
### Conventional (default)
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
type(scope): concise description of why
|
|
126
|
+
|
|
127
|
+
- Detail about what changed
|
|
128
|
+
- Another detail if needed
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Jira
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
PROJ-123: concise description of why
|
|
135
|
+
|
|
136
|
+
- Detail about what changed
|
|
137
|
+
- Another detail if needed
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Where `PROJ-` comes from `operations.git.commit_prefix`.
|
|
141
|
+
|
|
142
|
+
### Plain
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
Concise description of what changed and why
|
|
146
|
+
|
|
147
|
+
- Detail about what changed
|
|
148
|
+
- Another detail if needed
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Rules
|
|
154
|
+
|
|
155
|
+
- **NEVER bypass gitleaks without `--skip-secret-scan`** + explicit reason
|
|
156
|
+
- **NEVER use `--no-verify`** unless explicitly requested by the user (separate from secret scan)
|
|
157
|
+
- Never amend previous commits unless explicitly requested
|
|
158
|
+
- Always create NEW commits
|
|
159
|
+
- Stage specific files, not `git add -A`
|
|
160
|
+
- Do NOT commit `.env` files or credentials — gitleaks catches most, but `.env*` should already be in `.gitignore`
|
|
161
|
+
- If `operations.git.pre_commit_hooks` is defined, expect them to run — do not bypass
|
|
162
|
+
- Respect `branch_strategy`: if gitflow, verify you're on the correct feature/develop branch, not main
|
|
163
|
+
|
|
164
|
+
## Skill References
|
|
165
|
+
|
|
166
|
+
- **`secret-safe-commit`** — provides gitleaks installation, `.gitleaks.toml` template, `.pre-commit-config.yaml`, and CI workflow
|
|
167
|
+
- **`purge-leaked-secret`** — reactive runbook when a secret IS detected (rotate + clean + audit)
|
|
168
|
+
- **`commit`** — alias of this command for backwards compatibility
|
|
169
|
+
|
|
170
|
+
## Quick install for a project that doesn't have gitleaks yet
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
# One-time setup per project (the secret-safe-commit skill automates this):
|
|
174
|
+
pip install pre-commit gitleaks
|
|
175
|
+
pre-commit install
|
|
176
|
+
|
|
177
|
+
# Verify it works:
|
|
178
|
+
gitleaks protect --source . --staged --verbose
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
After install, every `git commit` runs gitleaks via pre-commit hook
|
|
182
|
+
automatically AND `/safe-commit` runs it explicitly (defense in depth).
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Implement technical plans from thoughts/shared/plans with phase-by-phase verification
|
|
3
|
+
model: opus
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Implement Plan
|
|
7
|
+
|
|
8
|
+
You are tasked with implementing an approved technical plan from `thoughts/shared/plans/`. Plans contain phases with specific changes and success criteria.
|
|
9
|
+
|
|
10
|
+
## Getting Started
|
|
11
|
+
|
|
12
|
+
When given a plan path:
|
|
13
|
+
|
|
14
|
+
- Read the plan completely and check for existing checkmarks (- [x])
|
|
15
|
+
- Read the original ticket and all files mentioned in the plan
|
|
16
|
+
- **Read files fully** - never use limit/offset, you need complete context
|
|
17
|
+
- Think deeply about how the pieces fit together
|
|
18
|
+
- Create a todo list to track your progress
|
|
19
|
+
- Start implementing if you understand what needs to be done
|
|
20
|
+
|
|
21
|
+
If no plan path provided, ask for one.
|
|
22
|
+
|
|
23
|
+
## Implementation Philosophy
|
|
24
|
+
|
|
25
|
+
Plans are carefully designed, but reality can be messy. Your job is to:
|
|
26
|
+
|
|
27
|
+
- Follow the plan's intent while adapting to what you find
|
|
28
|
+
- Implement each phase fully before moving to the next
|
|
29
|
+
- Verify your work makes sense in the broader codebase context
|
|
30
|
+
- Update checkboxes in the plan as you complete sections
|
|
31
|
+
|
|
32
|
+
When things don't match the plan exactly:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
Issue in Phase [N]:
|
|
36
|
+
Expected: [what the plan says]
|
|
37
|
+
Found: [actual situation]
|
|
38
|
+
Why this matters: [explanation]
|
|
39
|
+
|
|
40
|
+
How should I proceed?
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Phase Execution
|
|
44
|
+
|
|
45
|
+
For each phase:
|
|
46
|
+
|
|
47
|
+
### 1. Read Context
|
|
48
|
+
|
|
49
|
+
- Read all files mentioned in the phase
|
|
50
|
+
- Understand the current state before making changes
|
|
51
|
+
|
|
52
|
+
### 2. Implement Changes
|
|
53
|
+
|
|
54
|
+
- Follow the plan's changes in order
|
|
55
|
+
- Write clean, focused code
|
|
56
|
+
- Don't add features not in the plan (Constitution IV: No Invention)
|
|
57
|
+
|
|
58
|
+
### 3. Verify - Automated
|
|
59
|
+
|
|
60
|
+
Run the automated success criteria:
|
|
61
|
+
|
|
62
|
+
- `npm test` or equivalent
|
|
63
|
+
- `npm run lint` or equivalent
|
|
64
|
+
- Build checks
|
|
65
|
+
|
|
66
|
+
Fix any failures before proceeding.
|
|
67
|
+
|
|
68
|
+
### 4. Verify - Manual
|
|
69
|
+
|
|
70
|
+
After automated verification passes, pause for human verification:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
Phase [N] Complete - Ready for Manual Verification
|
|
74
|
+
|
|
75
|
+
Automated verification passed:
|
|
76
|
+
- [List automated checks that passed]
|
|
77
|
+
|
|
78
|
+
Please perform the manual verification steps:
|
|
79
|
+
- [List manual verification items from the plan]
|
|
80
|
+
|
|
81
|
+
Let me know when manual testing is complete so I can proceed to Phase [N+1].
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 5. Update Progress
|
|
85
|
+
|
|
86
|
+
- Check off completed items in the plan file using Edit
|
|
87
|
+
- Update your TodoWrite list
|
|
88
|
+
- Commit progress if appropriate
|
|
89
|
+
|
|
90
|
+
## Resuming Work
|
|
91
|
+
|
|
92
|
+
If the plan has existing checkmarks:
|
|
93
|
+
|
|
94
|
+
- Trust that completed work is done
|
|
95
|
+
- Start from the first unchecked phase
|
|
96
|
+
- Verify the current state matches expectations before continuing
|
|
97
|
+
|
|
98
|
+
## If You Get Stuck
|
|
99
|
+
|
|
100
|
+
1. Read and understand all relevant code
|
|
101
|
+
2. Consider if the codebase evolved since the plan was written
|
|
102
|
+
3. Present the mismatch clearly and ask for guidance
|
|
103
|
+
4. Use sub-tasks sparingly - mainly for targeted debugging
|
|
104
|
+
|
|
105
|
+
## Follow-Through (Constitution VIII)
|
|
106
|
+
|
|
107
|
+
Your goal is to complete every phase with quality. Give each phase your best effort.
|
|
108
|
+
|
|
109
|
+
- After completing a phase, move to the next — maintain momentum through the plan
|
|
110
|
+
- If a phase can't be completed, explain what's blocking it with specifics so it can be resolved
|
|
111
|
+
- If context is getting long, create a /handoff documenting where you are and what remains — continuity matters
|
|
112
|
+
- Update plan checkboxes as you go — they're how progress is tracked across sessions
|
|
113
|
+
- After the final phase, verify your work (tests, lint, build) before declaring done
|
|
114
|
+
- Quality over speed: a phase done well is worth more than two done carelessly
|
|
115
|
+
|
|
116
|
+
## Handling Feedback During Implementation
|
|
117
|
+
|
|
118
|
+
When receiving review feedback (from user, PR reviewer, or adversarial review):
|
|
119
|
+
|
|
120
|
+
- **Clarify ALL before implementing** — If any feedback item is unclear, stop. Don't implement the clear ones and ask about the rest later. Items may be related; partial understanding leads to wrong implementations.
|
|
121
|
+
- **Implementation order** — Fix blocking issues first, then simple fixes, then complex refactors. Test each fix individually before moving to the next.
|
|
122
|
+
- **YAGNI check on suggestions** — Before implementing a reviewer's "add proper X" suggestion, grep the codebase to verify X is actually used. If nothing calls it, push back: "This isn't used. Remove it (YAGNI)?" (Constitution Article IV applies to review feedback too.)
|
|
123
|
+
|
|
124
|
+
## Constitution Compliance
|
|
125
|
+
|
|
126
|
+
- **Principle III**: You are implementing from a spec - follow it
|
|
127
|
+
- **Principle IV**: Don't invent beyond what the plan specifies
|
|
128
|
+
- **Principle V**: Run all quality checks before declaring phase complete
|
|
129
|
+
- **Principle VII**: If the plan involves HIGH-stake actions, pause for approval
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Quick research-plan-implement cycle for small tasks (Folloni funnel compressed)
|
|
3
|
+
model: opus
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Oneshot
|
|
7
|
+
|
|
8
|
+
A compressed version of the Folloni funnel for small, well-defined tasks.
|
|
9
|
+
Combines research, planning, and implementation in a single session.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- Small, focused changes (1-3 files)
|
|
14
|
+
- Clear requirements that don't need extensive research
|
|
15
|
+
- Bug fixes with known root cause
|
|
16
|
+
- Simple feature additions
|
|
17
|
+
|
|
18
|
+
## When NOT to Use
|
|
19
|
+
|
|
20
|
+
- Complex features touching 5+ files → Use /plan instead
|
|
21
|
+
- Unclear requirements → Use /research first
|
|
22
|
+
- Architecture changes → Use full Folloni funnel
|
|
23
|
+
|
|
24
|
+
## Process
|
|
25
|
+
|
|
26
|
+
### Phase 1: Quick Research (2-3 minutes)
|
|
27
|
+
|
|
28
|
+
- Read the relevant files FULLY
|
|
29
|
+
- Spawn **scout** to find related files if needed
|
|
30
|
+
- Understand the current implementation
|
|
31
|
+
|
|
32
|
+
### Phase 2: Mini Plan (1-2 minutes)
|
|
33
|
+
|
|
34
|
+
- Outline what changes are needed
|
|
35
|
+
- List affected files
|
|
36
|
+
- Define success criteria (automated + manual)
|
|
37
|
+
- Present to user for quick approval
|
|
38
|
+
|
|
39
|
+
### Phase 3: Implement
|
|
40
|
+
|
|
41
|
+
- Make the changes
|
|
42
|
+
- Run automated verification
|
|
43
|
+
- Report results
|
|
44
|
+
|
|
45
|
+
## Output Format
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Oneshot: [Brief description]
|
|
49
|
+
|
|
50
|
+
Research:
|
|
51
|
+
- [Key finding 1]
|
|
52
|
+
- [Key finding 2]
|
|
53
|
+
|
|
54
|
+
Plan:
|
|
55
|
+
- [ ] Change 1 in file.ts
|
|
56
|
+
- [ ] Change 2 in other.ts
|
|
57
|
+
|
|
58
|
+
Success Criteria:
|
|
59
|
+
- Automated: [commands]
|
|
60
|
+
- Manual: [verification steps]
|
|
61
|
+
|
|
62
|
+
Proceeding with implementation...
|
|
63
|
+
```
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Enforces strict Red-Green-Refactor TDD discipline with git micro-commits at each phase
|
|
3
|
+
model: opus
|
|
4
|
+
version: "3.0.0"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /tdd — Test-Driven Development Workflow
|
|
8
|
+
|
|
9
|
+
Enforces the Red-Green-Refactor cycle. Prevents writing production code before the failing
|
|
10
|
+
test exists. Each phase gets its own micro-commit for full traceability.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/tdd [feature-description] → Start a new TDD cycle
|
|
16
|
+
/tdd --continue → Resume from current state (detects which phase you're in)
|
|
17
|
+
/tdd --status → Show current cycle state without doing anything
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## The Cycle
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
┌─────────────────────────────────────────────────────┐
|
|
24
|
+
│ TDD CYCLE │
|
|
25
|
+
│ │
|
|
26
|
+
│ ① RED ② GREEN ③ REFACTOR │
|
|
27
|
+
│ Write the → Write minimal → Improve code │
|
|
28
|
+
│ failing code to pass while tests │
|
|
29
|
+
│ test the test stay green │
|
|
30
|
+
│ │
|
|
31
|
+
│ git commit git commit git commit │
|
|
32
|
+
│ test(red): feat(green): refactor: │
|
|
33
|
+
│ │
|
|
34
|
+
│ ↓ is the feature complete? │
|
|
35
|
+
│ ↑ NO → loop back to RED │
|
|
36
|
+
│ YES → done │
|
|
37
|
+
└─────────────────────────────────────────────────────┘
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Phase Instructions
|
|
41
|
+
|
|
42
|
+
### ① RED — Write the Failing Test
|
|
43
|
+
|
|
44
|
+
1. Write a test that describes the desired behavior. Be specific — the test name should
|
|
45
|
+
read like a requirement: `it("should return 404 when user is not found")`
|
|
46
|
+
2. Run the test suite and confirm the new test FAILS
|
|
47
|
+
3. If the test passes without writing any code: the test is wrong or the feature already exists. Stop and investigate.
|
|
48
|
+
4. Commit: `git commit -m "test(red): [description of what behavior is being tested]"`
|
|
49
|
+
|
|
50
|
+
**Good test vs Bad test:**
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
// GOOD — clear name, tests real behavior, one thing
|
|
54
|
+
test("retries failed operations 3 times", async () => {
|
|
55
|
+
let attempts = 0;
|
|
56
|
+
const operation = () => {
|
|
57
|
+
attempts++;
|
|
58
|
+
if (attempts < 3) throw new Error("fail");
|
|
59
|
+
return "success";
|
|
60
|
+
};
|
|
61
|
+
const result = await retryOperation(operation);
|
|
62
|
+
expect(result).toBe("success");
|
|
63
|
+
expect(attempts).toBe(3);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// BAD — vague name, tests mock not behavior
|
|
67
|
+
test("retry works", async () => {
|
|
68
|
+
const mock = jest
|
|
69
|
+
.fn()
|
|
70
|
+
.mockRejectedValueOnce(new Error())
|
|
71
|
+
.mockResolvedValueOnce("ok");
|
|
72
|
+
await retryOperation(mock);
|
|
73
|
+
expect(mock).toHaveBeenCalledTimes(2);
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**BLOCK:** Do not write any production code during this phase.
|
|
78
|
+
|
|
79
|
+
**Test runner detection:**
|
|
80
|
+
|
|
81
|
+
- `package.json` with jest/vitest → `npm test` or `npx vitest run`
|
|
82
|
+
- `pytest` installed → `pytest [test_file]`
|
|
83
|
+
- `go.mod` → `go test ./...`
|
|
84
|
+
- `Cargo.toml` → `cargo test`
|
|
85
|
+
|
|
86
|
+
### ② GREEN — Write Minimal Code to Pass
|
|
87
|
+
|
|
88
|
+
1. Write the simplest code that makes the failing test pass. Resist the urge to make it
|
|
89
|
+
perfect — that's what Refactor is for.
|
|
90
|
+
2. Run the test suite. The new test must pass. No existing tests must break.
|
|
91
|
+
3. If any existing test breaks: fix the regression before proceeding. Do not commit broken tests.
|
|
92
|
+
4. Commit: `git commit -m "feat(green): [description of the implementation]"`
|
|
93
|
+
|
|
94
|
+
**BLOCK:** Do not refactor, rename, or improve code quality during this phase.
|
|
95
|
+
**BLOCK:** Do not commit if any test is failing (including pre-existing tests).
|
|
96
|
+
|
|
97
|
+
### ③ REFACTOR — Improve Without Changing Behavior
|
|
98
|
+
|
|
99
|
+
1. Improve code quality: naming, structure, duplication, readability.
|
|
100
|
+
2. Run tests after each meaningful change to ensure nothing broke.
|
|
101
|
+
3. If a test breaks during refactor: you changed behavior, not just structure. Revert the change.
|
|
102
|
+
4. Commit: `git commit -m "refactor: [description of the improvement]"`
|
|
103
|
+
|
|
104
|
+
**BLOCK:** Do not add new behavior during this phase — that goes in the next RED cycle.
|
|
105
|
+
|
|
106
|
+
### Cycle Completion Check
|
|
107
|
+
|
|
108
|
+
After each REFACTOR commit, ask:
|
|
109
|
+
|
|
110
|
+
> "Is the feature complete? Or does another behavior need to be tested?"
|
|
111
|
+
|
|
112
|
+
- **Complete** → TDD cycle done. Run `/check` to run the full quality gate.
|
|
113
|
+
- **More to build** → Start a new RED phase for the next behavior.
|
|
114
|
+
|
|
115
|
+
## Guards
|
|
116
|
+
|
|
117
|
+
| Situation | Action |
|
|
118
|
+
| ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
119
|
+
| Production code written before RED commit exists | BLOCK — delete it, start over with the test. Code written before the test is unverified — keeping it as "reference" leads to testing-after, not TDD |
|
|
120
|
+
| Test passes immediately without implementation | STOP — investigate why (feature may already exist) |
|
|
121
|
+
| Committing GREEN with failing tests | BLOCK — do not commit |
|
|
122
|
+
| Adding new behavior during REFACTOR | WARN — save it for the next RED cycle |
|
|
123
|
+
| Refactor breaks a test | STOP — revert the breaking change |
|
|
124
|
+
|
|
125
|
+
## Example Cycle
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
Feature: "User profile endpoint returns 404 when user not found"
|
|
129
|
+
|
|
130
|
+
RED:
|
|
131
|
+
test: GET /users/:id returns 404 when id doesn't exist
|
|
132
|
+
run: npm test → FAIL (404 handler not implemented)
|
|
133
|
+
commit: "test(red): user profile returns 404 for unknown id"
|
|
134
|
+
|
|
135
|
+
GREEN:
|
|
136
|
+
code: add 404 check in getUserById handler
|
|
137
|
+
run: npm test → PASS
|
|
138
|
+
commit: "feat(green): return 404 when user not found in getUserById"
|
|
139
|
+
|
|
140
|
+
REFACTOR:
|
|
141
|
+
improve: extract notFound() helper, improve error message
|
|
142
|
+
run: npm test → PASS
|
|
143
|
+
commit: "refactor: extract notFound helper in user controller"
|
|
144
|
+
|
|
145
|
+
→ Done. Run /check for full quality gate.
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Integration
|
|
149
|
+
|
|
150
|
+
- Extends [testing](../../skills/general/testing/SKILL.md) with enforcement mechanics
|
|
151
|
+
- Micro-commits pair with [/commit](../git/commit.md) conventions
|
|
152
|
+
- After TDD cycle is complete, run [/check](../review/check.md) for full gate validation
|