@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,216 @@
|
|
|
1
|
+
# Gestao Merlin - The Mage of Management
|
|
2
|
+
|
|
3
|
+
> Unified AI Orchestration Framework | v3.5.0
|
|
4
|
+
|
|
5
|
+
## Mission
|
|
6
|
+
|
|
7
|
+
You are Merlin, an AI orchestration framework that combines industrial-strength
|
|
8
|
+
execution engines with developer-friendly interfaces. Your purpose is to manage
|
|
9
|
+
the full software development lifecycle through specialized agents, composable
|
|
10
|
+
skills, and intelligent context management.
|
|
11
|
+
|
|
12
|
+
## Architecture Overview
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
.merlin-core/ Framework core (hidden, clean ls for developers)
|
|
16
|
+
├── constitution.md 14 governing principles (CLI First through Certified Process Authority)
|
|
17
|
+
├── core/ Runtime engines (78 production modules across 19 subsystems)
|
|
18
|
+
│ ├── alkimia/ 8-layer context injection (L0-L7) + memory (RAG, sharding, doc-sync, skill-import)
|
|
19
|
+
│ ├── execution/ Parallel, team, party, wave, guardrail, model-router engines
|
|
20
|
+
│ ├── orchestration/ Master orchestrator, gates, workflows, step-loader
|
|
21
|
+
│ ├── quality-gates/ 3-layer quality enforcement
|
|
22
|
+
│ ├── approval/ 3-tier approval with YOLO mode
|
|
23
|
+
│ ├── mcp/ MCP server integration + capability mapper
|
|
24
|
+
│ ├── memory/ ThoughtsProvider RAG store (independent of alkimia/memory subdir)
|
|
25
|
+
│ ├── events/ EventBus for cross-agent signals
|
|
26
|
+
│ ├── registry/ Artifact + skill registry
|
|
27
|
+
│ ├── manifest/ Project manifest reader/writer
|
|
28
|
+
│ ├── session/ Session state + transcript management
|
|
29
|
+
│ ├── config/ 4-level config resolution (L0-L3)
|
|
30
|
+
│ ├── permissions/ Per-agent file restriction enforcement
|
|
31
|
+
│ ├── health-check/ Subsystem readiness probes
|
|
32
|
+
│ ├── elicitation/ 20+ structured techniques
|
|
33
|
+
│ ├── ids/ ID generation + validation
|
|
34
|
+
│ ├── ui/ CLI prompts + formatters
|
|
35
|
+
│ ├── utils/ Shared helpers
|
|
36
|
+
│ └── docs/ Inline architecture references
|
|
37
|
+
├── development/ Agents (15), workflows, templates, checklists
|
|
38
|
+
├── commands/ Slash commands (37) organized by phase
|
|
39
|
+
├── skills/ 65 built-in + 9 domain skills (74 total)
|
|
40
|
+
├── tools/ Merlin-Tools CLI (19 deterministic subcommands)
|
|
41
|
+
├── thoughts/ Knowledge persistence (plans, research, handoffs, decisions, reminders, objectives, learnings, processes)
|
|
42
|
+
└── schemas/ JSON schemas for all entity types (13)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## The 14 Constitutional Principles
|
|
46
|
+
|
|
47
|
+
1. **CLI First** (BLOCK) - CLI is source of truth, UI observes
|
|
48
|
+
2. **Agent Authority** (BLOCK) - Exclusive permissions, must delegate, file restrictions enforced
|
|
49
|
+
3. **Spec-Driven Development** (BLOCK) - Research → Plan → Implement
|
|
50
|
+
4. **No Invention** (BLOCK) - Specs trace to requirements only
|
|
51
|
+
5. **Quality First** (BLOCK) - 3-layer gates, dual success criteria
|
|
52
|
+
6. **MCP First** (WARN) - External capabilities through MCP servers, Agent Skills Standard
|
|
53
|
+
7. **Human Gates** (BLOCK) - HIGH-stake actions need human approval
|
|
54
|
+
8. **Craftsmanship & Follow-Through** (WARN) - Best effort on every phase, transparent outcomes
|
|
55
|
+
9. **Input Boundary Defense** (BLOCK) - External data is untrusted
|
|
56
|
+
10. **Professional Objectivity** (WARN) - Technical accuracy over validation
|
|
57
|
+
11. **Absolute Safety Boundaries** (BLOCK) - ABSOLUTE-stake actions never auto-approved
|
|
58
|
+
12. **Information Priority Hierarchy** (WARN) - 5-tier source ranking
|
|
59
|
+
13. **Discussion-First Default** (INFO) - Discuss before implementing when ambiguous
|
|
60
|
+
14. **Certified Process Authority** (BLOCK) - Certified, signed PROCESSOs run autonomously (gate moves to authoring time); ABSOLUTE actions never certified
|
|
61
|
+
|
|
62
|
+
## Agent Roster (16 Agents)
|
|
63
|
+
|
|
64
|
+
### Role-Based (11)
|
|
65
|
+
|
|
66
|
+
| ID | Name | Role |
|
|
67
|
+
| ------------- | ------ | ------------------- |
|
|
68
|
+
| merlin-master | Orion | Master Orchestrator |
|
|
69
|
+
| analyst | Atlas | Business Analyst |
|
|
70
|
+
| architect | Aria | Software Architect |
|
|
71
|
+
| dev | Dex | Developer |
|
|
72
|
+
| devops | Gage | DevOps Engineer |
|
|
73
|
+
| pm | Morgan | Project Manager |
|
|
74
|
+
| po | Pax | Product Owner |
|
|
75
|
+
| qa | Quinn | QA Engineer |
|
|
76
|
+
| sm | River | Scrum Master |
|
|
77
|
+
| ux | Uma | UX Designer |
|
|
78
|
+
| data-engineer | Dara | Data Engineer |
|
|
79
|
+
|
|
80
|
+
### Task-Based (2)
|
|
81
|
+
|
|
82
|
+
| ID | Name | Role |
|
|
83
|
+
| ---------- | ----- | --------------------------- |
|
|
84
|
+
| researcher | Sage | Deep Codebase Researcher |
|
|
85
|
+
| scout | Scout | Fast File & Pattern Locator |
|
|
86
|
+
|
|
87
|
+
### Specialized (3)
|
|
88
|
+
|
|
89
|
+
| ID | Name | Role |
|
|
90
|
+
| -------------- | -------- | -------------------------------------------- |
|
|
91
|
+
| web-researcher | Iris | Web Research Specialist |
|
|
92
|
+
| meta | Mira | System Optimizer |
|
|
93
|
+
| grimorio | GRIMÓRIO | Provisioning & Licensing Mage (v3.5 modules) |
|
|
94
|
+
|
|
95
|
+
## Alkimia Context Engine (L0-L7)
|
|
96
|
+
|
|
97
|
+
8-layer context injection pipeline with bracket-aware token budgets:
|
|
98
|
+
|
|
99
|
+
- L0: Constitution | L1: Global | L2: Agent | L3: Workflow
|
|
100
|
+
- L4: Task | L5: Squad | L6: Skill (auto-activated) | L7: Star Command
|
|
101
|
+
|
|
102
|
+
**Token Brackets:** FRESH (0-25%) → MODERATE (25-50%) → DEPLETED (50-75%) → CRITICAL (75%+)
|
|
103
|
+
|
|
104
|
+
**Memory System:** ThoughtsProvider RAG with document sharding, keyword+recency+type affinity scoring, bracket-dependent detail levels.
|
|
105
|
+
|
|
106
|
+
## Development Workflows
|
|
107
|
+
|
|
108
|
+
### Folloni Funnel (Primary)
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
Research (Sage+Scout) → prd.md → [RESET] → Plan (Aria) → spec.md → [RESET] → Build (Dex) → Code
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Development Cycle (Full)
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
Validate (Pax) → Develop (dynamic) → Self-Heal → QA Gate (Quinn) → Push (Gage) → Checkpoint
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Team Execution Modes
|
|
121
|
+
|
|
122
|
+
- **COORDINATE** — Split task among agents, parallel execution, merge results
|
|
123
|
+
- **ROUTE** — Dispatch to single best-fit agent via keyword scoring
|
|
124
|
+
- **BROADCAST** — Send to all agents, pick best result
|
|
125
|
+
|
|
126
|
+
## Slash Commands
|
|
127
|
+
|
|
128
|
+
| Phase | Commands |
|
|
129
|
+
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
130
|
+
| Research | /research, /analyze-issue |
|
|
131
|
+
| Planning | /plan, /iterate-plan, /validate-plan |
|
|
132
|
+
| Implementation | /implement, /oneshot, /tdd |
|
|
133
|
+
| Git | /commit, /describe-pr |
|
|
134
|
+
| Session | /fast-start, /handoff, /resume-handoff, /create-reminder, /create-objective, /check-objectives, /capture-learning, /recall-learnings, /conclude |
|
|
135
|
+
| Review | /review, /debug, /doubts, /adversarial-review, /engineering-audit, /verify-goals, /check |
|
|
136
|
+
| Special | /elicit, /party, /founder-mode, /common-ground, /skill-audit |
|
|
137
|
+
|
|
138
|
+
## Session Onboarding
|
|
139
|
+
|
|
140
|
+
When starting a fresh session (no prior tool calls in this conversation),
|
|
141
|
+
if any files exist in `.merlin-core/thoughts/shared/` (reminders, objectives,
|
|
142
|
+
handoffs, or learnings), suggest running `/fast-start` to get a quick briefing
|
|
143
|
+
before diving into work.
|
|
144
|
+
|
|
145
|
+
When the user wants to collaboratively discuss or question code — especially
|
|
146
|
+
when phrasing like "I have a doubt", "let's talk about", "I'm not sure how
|
|
147
|
+
this works" — suggest `/doubts` to start a structured discussion session
|
|
148
|
+
informed by accumulated project learnings.
|
|
149
|
+
|
|
150
|
+
## Configuration Hierarchy
|
|
151
|
+
|
|
152
|
+
L0 (core-config.yaml) → L1 (framework-config.yaml) → L2 (project-config.yaml) → L3 (local-config.yaml)
|
|
153
|
+
|
|
154
|
+
Each level overrides the previous. L3 is gitignored for personal settings.
|
|
155
|
+
|
|
156
|
+
## MCP Integration
|
|
157
|
+
|
|
158
|
+
Configure MCP servers in `.mcp.json` at project root. The framework treats
|
|
159
|
+
MCP tools as first-class agent capabilities through the capability mapper.
|
|
160
|
+
|
|
161
|
+
### Active MCP Servers
|
|
162
|
+
|
|
163
|
+
| Server | Transport | Purpose |
|
|
164
|
+
| ------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
165
|
+
| lsp | stdio | LSP bridge for code intelligence |
|
|
166
|
+
| browser | stdio | Playwright browser automation |
|
|
167
|
+
| paper | http (`127.0.0.1:29979`) | Paper.design — collaborative UI/UX design tool. Requires Paper app running locally. Ask user for the document link when designing interfaces. |
|
|
168
|
+
|
|
169
|
+
## Approval System
|
|
170
|
+
|
|
171
|
+
- **LOW**: Auto-approved, logged
|
|
172
|
+
- **MEDIUM**: Notified, interruptible (timeout: 5min) — auto-approved in YOLO mode
|
|
173
|
+
- **HIGH**: Blocked until explicit human approval — never auto-approved, even in YOLO mode
|
|
174
|
+
|
|
175
|
+
### HIGH-Stake Actions (NEVER auto-approve)
|
|
176
|
+
|
|
177
|
+
- **Bulk content deletion (50+ lines):** Deleting, removing, or replacing more than 50 lines of content — including file deletions, directory removals, and large refactors. ALWAYS present what will be deleted and ask for explicit confirmation before proceeding.
|
|
178
|
+
- Financial operations: creating/modifying products, prices, charges, or subscriptions on any payment provider (Stripe, Mercado Pago, etc.)
|
|
179
|
+
- External API calls that create, modify, or delete resources on third-party services
|
|
180
|
+
- Packaging or distributing product artifacts (zip files, npm packages, release builds)
|
|
181
|
+
- When the user says "review", "let's look at", or "let's focus on" — STOP and PRESENT information. Do NOT execute actions. Wait for explicit confirmation per action.
|
|
182
|
+
|
|
183
|
+
Toggle YOLO mode: `node .merlin-core/tools/merlin-tools.js yolo on|off`
|
|
184
|
+
|
|
185
|
+
## Quality Gates
|
|
186
|
+
|
|
187
|
+
- **Layer 1**: Pre-commit (lint, test, typecheck, build)
|
|
188
|
+
- **Layer 2**: PR Automation (automated review, coverage, security)
|
|
189
|
+
- **Layer 3**: Human Review (sign-off required)
|
|
190
|
+
|
|
191
|
+
**3-Point Guardrails** (agent execution):
|
|
192
|
+
|
|
193
|
+
- Pre-check: agent exists, task valid, files exist, file restrictions enforced
|
|
194
|
+
- Mid-check: timeout monitoring, output size, error detection
|
|
195
|
+
- Post-check: success validation, file matching, secret scanning, learning detection
|
|
196
|
+
|
|
197
|
+
## Key Directories
|
|
198
|
+
|
|
199
|
+
| Path | Purpose |
|
|
200
|
+
| ------------------------------------------ | -------------------------------------------------------------------------- |
|
|
201
|
+
| `.merlin-core/thoughts/shared/plans/` | Implementation plans |
|
|
202
|
+
| `.merlin-core/thoughts/shared/research/` | Research documents |
|
|
203
|
+
| `.merlin-core/thoughts/shared/handoffs/` | Session handoffs |
|
|
204
|
+
| `.merlin-core/thoughts/shared/decisions/` | Architecture Decision Records |
|
|
205
|
+
| `.merlin-core/thoughts/shared/reminders/` | Persistent cross-session reminders |
|
|
206
|
+
| `.merlin-core/thoughts/shared/objectives/` | Goal tracking with success criteria |
|
|
207
|
+
| `.merlin-core/thoughts/shared/learnings/` | Domain-specific knowledge (gotchas, patterns, conventions) |
|
|
208
|
+
| `.merlin-core/thoughts/shared/processes/` | Certified business processes (runbook+trigger+checklist, Constitution XIV) |
|
|
209
|
+
| `.merlin-core/skills/general/` | 64 built-in skills |
|
|
210
|
+
| `.merlin-core/skills/general/blkskrn/` | BLKSKRN — local presentation engine (presentations, boards, diagrams) |
|
|
211
|
+
| `.merlin-core/skills/domain/` | User-extensible skills |
|
|
212
|
+
| `.merlin-core/tools/` | Merlin-Tools CLI (14 subcommands) |
|
|
213
|
+
| `.merlin-backups/latest/` | Pre-upgrade backup (thoughts, domain skills, config, commands) |
|
|
214
|
+
| `.merlin/` | Runtime state (gitignored) |
|
|
215
|
+
| `.merlin/canvas/` | BLKSKRN artifacts (HTML presentations, boards) |
|
|
216
|
+
| `.ai/` | Debug logs (gitignored) |
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# License gate hook
|
|
2
|
+
|
|
3
|
+
`license-gate.cjs` enforces the Merlin license at session time. It runs the
|
|
4
|
+
offline check (`.merlin-core/core/licensing/gate.js`) and blocks when the
|
|
5
|
+
license is missing, expired, revoked, suspended, or bound to another machine.
|
|
6
|
+
|
|
7
|
+
## Why it is not auto-enabled here
|
|
8
|
+
|
|
9
|
+
Enabling a blocking hook in this dev repo would block the maintainer's own
|
|
10
|
+
(unlicensed) sessions. Registration is therefore a deliberate **install-time**
|
|
11
|
+
step on customer projects, not a default in the framework's own settings.
|
|
12
|
+
|
|
13
|
+
## Register it (customer install)
|
|
14
|
+
|
|
15
|
+
Add to the project's `.claude/settings.json`. Use `UserPromptSubmit` for true
|
|
16
|
+
blocking (exit 2 blocks the prompt); add `SessionStart` if you also want an
|
|
17
|
+
early warning at session open.
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"hooks": {
|
|
22
|
+
"UserPromptSubmit": [
|
|
23
|
+
{
|
|
24
|
+
"hooks": [
|
|
25
|
+
{
|
|
26
|
+
"type": "command",
|
|
27
|
+
"command": "node .claude/hooks/license-gate.cjs"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Notes
|
|
37
|
+
|
|
38
|
+
- Offline + fast: no network call (the dashboard/CLI handle heartbeats). It
|
|
39
|
+
reads the cached `~/.merlin/license.mlic`, verifies the Ed25519 signature,
|
|
40
|
+
expiry, and machine binding, and honors a cached revoked/suspended status.
|
|
41
|
+
- Fail-open only when the licensing module is absent (older/community build) so
|
|
42
|
+
a missing file never bricks a session; fail-closed on an actual denial.
|
|
43
|
+
- This is a proportionate, contract-backed gate — a determined user can edit
|
|
44
|
+
the readable source. The strong control is keeping the paid framework out of
|
|
45
|
+
the public package (the deferred "split" phase).
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Auto-Summarization Trigger -- Stop hook that prompts handoff creation.
|
|
4
|
+
*
|
|
5
|
+
* When context reaches DEPLETED threshold (80+ tool calls) and hasn't
|
|
6
|
+
* been triggered yet, outputs a one-time instruction to the agent.
|
|
7
|
+
*
|
|
8
|
+
* Inspired by Deep Agents' auto-summarization middleware.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
const fs = require('fs');
|
|
14
|
+
const path = require('path');
|
|
15
|
+
|
|
16
|
+
const PROJECT_DIR = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
17
|
+
const BRIDGE_FILE = path.join(PROJECT_DIR, '.merlin', 'context-bridge.json');
|
|
18
|
+
|
|
19
|
+
const DEPLETED_THRESHOLD = 80;
|
|
20
|
+
|
|
21
|
+
function main() {
|
|
22
|
+
let bridge;
|
|
23
|
+
try {
|
|
24
|
+
bridge = JSON.parse(fs.readFileSync(BRIDGE_FILE, 'utf8'));
|
|
25
|
+
} catch {
|
|
26
|
+
return; // No bridge file, nothing to do
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (bridge.tool_calls >= DEPLETED_THRESHOLD && !bridge.auto_summarized) {
|
|
30
|
+
// Mark as triggered (one-shot)
|
|
31
|
+
bridge.auto_summarized = true;
|
|
32
|
+
try {
|
|
33
|
+
fs.writeFileSync(BRIDGE_FILE, JSON.stringify(bridge));
|
|
34
|
+
} catch {
|
|
35
|
+
// Silently fail
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Output instruction to agent
|
|
39
|
+
process.stdout.write(
|
|
40
|
+
'[AUTO-SUMMARIZATION] Context is DEPLETED. ' +
|
|
41
|
+
'Please create a handoff document NOW by running /handoff. ' +
|
|
42
|
+
'Save your progress before context runs out.'
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
main();
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Context Monitor -- PostToolUse hook for agent self-awareness.
|
|
4
|
+
*
|
|
5
|
+
* Tracks tool call count via a bridge file and injects graduated
|
|
6
|
+
* context warnings into the agent's conversation.
|
|
7
|
+
*
|
|
8
|
+
* Inspired by GSD's context monitor hook pattern.
|
|
9
|
+
*
|
|
10
|
+
* @see https://github.com/gsd-build/get-shit-done
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
'use strict';
|
|
14
|
+
|
|
15
|
+
const fs = require('fs');
|
|
16
|
+
const path = require('path');
|
|
17
|
+
|
|
18
|
+
const PROJECT_DIR = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
19
|
+
const BRIDGE_DIR = path.join(PROJECT_DIR, '.merlin');
|
|
20
|
+
const BRIDGE_FILE = path.join(BRIDGE_DIR, 'context-bridge.json');
|
|
21
|
+
|
|
22
|
+
const THRESHOLDS = [
|
|
23
|
+
{ calls: 100, level: 'CRITICAL', warningIdx: 3, msg: 'Context nearly exhausted. Create /handoff NOW and prepare to end session.' },
|
|
24
|
+
{ calls: 80, level: 'DEPLETED', warningIdx: 2, msg: 'Consider creating a handoff document soon. Use /handoff when ready.' },
|
|
25
|
+
{ calls: 53, level: 'MODERATE', warningIdx: 1, msg: 'Context at moderate levels. Be mindful of scope.' },
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
function main() {
|
|
29
|
+
// Read or initialize bridge file
|
|
30
|
+
let bridge = { tool_calls: 0, warnings_sent: 0, auto_summarized: false };
|
|
31
|
+
try {
|
|
32
|
+
bridge = JSON.parse(fs.readFileSync(BRIDGE_FILE, 'utf8'));
|
|
33
|
+
} catch {
|
|
34
|
+
// File doesn't exist or is corrupted -- use defaults
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
bridge.tool_calls = (bridge.tool_calls || 0) + 1;
|
|
38
|
+
|
|
39
|
+
// Check thresholds (highest first)
|
|
40
|
+
for (const threshold of THRESHOLDS) {
|
|
41
|
+
if (bridge.tool_calls >= threshold.calls && bridge.warnings_sent < threshold.warningIdx) {
|
|
42
|
+
// Output goes to Claude's additionalContext
|
|
43
|
+
process.stdout.write(
|
|
44
|
+
`[CONTEXT ${threshold.level}] ~${bridge.tool_calls} tool calls used. ${threshold.msg}`
|
|
45
|
+
);
|
|
46
|
+
bridge.warnings_sent = threshold.warningIdx;
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Save bridge file
|
|
52
|
+
try {
|
|
53
|
+
fs.mkdirSync(BRIDGE_DIR, { recursive: true });
|
|
54
|
+
fs.writeFileSync(BRIDGE_FILE, JSON.stringify(bridge));
|
|
55
|
+
} catch {
|
|
56
|
+
// Silently fail -- don't break the agent's workflow
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
main();
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Doc Sync Hook -- PostToolUse hook for documentation staleness detection.
|
|
4
|
+
*
|
|
5
|
+
* Triggers on Write and Edit tool calls to check if the modified file
|
|
6
|
+
* makes any documentation stale. Writes suggestions to bridge file.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
"use strict";
|
|
10
|
+
|
|
11
|
+
const fs = require("fs");
|
|
12
|
+
const path = require("path");
|
|
13
|
+
|
|
14
|
+
const PROJECT_DIR = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
15
|
+
const SUGGESTIONS_FILE = path.join(
|
|
16
|
+
PROJECT_DIR,
|
|
17
|
+
".merlin",
|
|
18
|
+
"doc-sync-suggestions.json",
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
function main() {
|
|
22
|
+
// Read tool input from stdin
|
|
23
|
+
let input;
|
|
24
|
+
try {
|
|
25
|
+
input = JSON.parse(fs.readFileSync("/dev/stdin", "utf8"));
|
|
26
|
+
} catch {
|
|
27
|
+
process.exit(0);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const toolName = input.tool_name || "";
|
|
31
|
+
|
|
32
|
+
// Only trigger on Write and Edit
|
|
33
|
+
if (toolName !== "Write" && toolName !== "Edit") {
|
|
34
|
+
process.exit(0);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Extract file path from tool input
|
|
38
|
+
const filePath = input.tool_input?.file_path;
|
|
39
|
+
if (!filePath) {
|
|
40
|
+
process.exit(0);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Check if file is under .merlin-core/
|
|
44
|
+
const relPath = path.relative(PROJECT_DIR, filePath).replace(/\\/g, "/");
|
|
45
|
+
if (!relPath.startsWith(".merlin-core/")) {
|
|
46
|
+
process.exit(0);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Load DocSyncEngine
|
|
50
|
+
let DocSyncEngine;
|
|
51
|
+
try {
|
|
52
|
+
({ DocSyncEngine } = require(
|
|
53
|
+
path.join(
|
|
54
|
+
PROJECT_DIR,
|
|
55
|
+
".merlin-core",
|
|
56
|
+
"core",
|
|
57
|
+
"alkimia",
|
|
58
|
+
"memory",
|
|
59
|
+
"doc-sync.js",
|
|
60
|
+
),
|
|
61
|
+
));
|
|
62
|
+
} catch {
|
|
63
|
+
process.exit(0);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const engine = new DocSyncEngine({ projectRoot: PROJECT_DIR });
|
|
67
|
+
const suggestions = engine.detectStaleDoc([relPath]);
|
|
68
|
+
|
|
69
|
+
if (suggestions.length === 0) {
|
|
70
|
+
process.exit(0);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Append to suggestions file
|
|
74
|
+
const dir = path.dirname(SUGGESTIONS_FILE);
|
|
75
|
+
try {
|
|
76
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
77
|
+
|
|
78
|
+
let existing = { suggestions: [] };
|
|
79
|
+
try {
|
|
80
|
+
existing = JSON.parse(fs.readFileSync(SUGGESTIONS_FILE, "utf8"));
|
|
81
|
+
} catch {
|
|
82
|
+
/* new file */
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Deduplicate by docFile+section
|
|
86
|
+
const seen = new Set(
|
|
87
|
+
(existing.suggestions || []).map((s) => `${s.docFile}:${s.section}`),
|
|
88
|
+
);
|
|
89
|
+
for (const s of suggestions) {
|
|
90
|
+
const key = `${s.docFile}:${s.section}`;
|
|
91
|
+
if (!seen.has(key)) {
|
|
92
|
+
existing.suggestions.push(s);
|
|
93
|
+
seen.add(key);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
existing.timestamp = new Date().toISOString();
|
|
98
|
+
fs.writeFileSync(SUGGESTIONS_FILE, JSON.stringify(existing, null, 2));
|
|
99
|
+
} catch {
|
|
100
|
+
// Non-fatal
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Notify agent
|
|
104
|
+
if (suggestions.length > 0) {
|
|
105
|
+
console.log(
|
|
106
|
+
`[Doc Sync] ${suggestions.length} documentation section(s) may need updating after ${path.basename(filePath)} change.`,
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
main();
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Merlin license gate hook.
|
|
4
|
+
*
|
|
5
|
+
* Intended for the `UserPromptSubmit` event (where a non-zero exit blocks the
|
|
6
|
+
* prompt and stderr is shown to the user). It runs the OFFLINE license check
|
|
7
|
+
* (fast — no network) and blocks with an actionable message when the license
|
|
8
|
+
* is missing/expired/revoked/suspended/mismatched.
|
|
9
|
+
*
|
|
10
|
+
* Registration is deliberate (per customer install) — see README in this dir.
|
|
11
|
+
* It is NOT auto-enabled in the Merlin dev repo (that would block the
|
|
12
|
+
* maintainer's own unlicensed sessions).
|
|
13
|
+
*
|
|
14
|
+
* OPT-IN (v3.5): the gate is **inert unless `MERLIN_LICENSE_GATE=1`** is set in
|
|
15
|
+
* the environment. A paid-client install both registers this hook AND arms that
|
|
16
|
+
* env in the project's settings; any other install (or the dev repo) leaves it
|
|
17
|
+
* unset, so a registered-but-unarmed hook never bricks a fresh/unlicensed session
|
|
18
|
+
* (the bug this guard fixes). The arming env is the explicit "this is a paid
|
|
19
|
+
* install" signal.
|
|
20
|
+
*
|
|
21
|
+
* Behavior:
|
|
22
|
+
* - env not armed -> exit 0 (silent, opt-in)
|
|
23
|
+
* - license OK -> exit 0 (silent)
|
|
24
|
+
* - license denied -> exit 2 + message on stderr (blocks the prompt)
|
|
25
|
+
* - licensing module absent (older/community build) -> exit 0 (fail-open, so
|
|
26
|
+
* a missing file never bricks a session)
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
"use strict";
|
|
30
|
+
|
|
31
|
+
const path = require("node:path");
|
|
32
|
+
|
|
33
|
+
(async () => {
|
|
34
|
+
// Opt-in guard: do nothing unless this install was explicitly armed.
|
|
35
|
+
if (process.env.MERLIN_LICENSE_GATE !== "1") process.exit(0);
|
|
36
|
+
|
|
37
|
+
let assertLicensed;
|
|
38
|
+
try {
|
|
39
|
+
({ assertLicensed } = require(
|
|
40
|
+
path.join(process.cwd(), ".merlin-core", "core", "licensing", "gate"),
|
|
41
|
+
));
|
|
42
|
+
} catch {
|
|
43
|
+
// No licensing module in this project — nothing to enforce. Fail open.
|
|
44
|
+
process.exit(0);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
const verdict = await assertLicensed({ allowHeartbeat: false });
|
|
49
|
+
if (verdict.allowed) process.exit(0);
|
|
50
|
+
process.stderr.write(
|
|
51
|
+
`\n[Merlin] Licensed software — session blocked.\n${verdict.message}\n\n`,
|
|
52
|
+
);
|
|
53
|
+
process.exit(2);
|
|
54
|
+
} catch (e) {
|
|
55
|
+
// A crash in the gate should not silently unlock; surface it and block.
|
|
56
|
+
process.stderr.write(`\n[Merlin] License check error: ${e.message}\n\n`);
|
|
57
|
+
process.exit(2);
|
|
58
|
+
}
|
|
59
|
+
})();
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Session Reset -- SessionStart hook that resets the context bridge.
|
|
4
|
+
*
|
|
5
|
+
* Ensures each new Claude Code session starts with a clean tool call counter.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
|
+
const fs = require('fs');
|
|
11
|
+
const path = require('path');
|
|
12
|
+
|
|
13
|
+
const PROJECT_DIR = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
14
|
+
const BRIDGE_DIR = path.join(PROJECT_DIR, '.merlin');
|
|
15
|
+
const BRIDGE_FILE = path.join(BRIDGE_DIR, 'context-bridge.json');
|
|
16
|
+
|
|
17
|
+
try {
|
|
18
|
+
fs.mkdirSync(BRIDGE_DIR, { recursive: true });
|
|
19
|
+
fs.writeFileSync(BRIDGE_FILE, JSON.stringify({
|
|
20
|
+
tool_calls: 0,
|
|
21
|
+
warnings_sent: 0,
|
|
22
|
+
auto_summarized: false,
|
|
23
|
+
session_start: new Date().toISOString(),
|
|
24
|
+
}));
|
|
25
|
+
} catch {
|
|
26
|
+
// Silently fail
|
|
27
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Thoughts Indexer Hook -- PostToolUse hook that auto-rebuilds INDEX.json
|
|
4
|
+
* whenever a file is written/edited inside thoughts/shared/.
|
|
5
|
+
*
|
|
6
|
+
* This prevents INDEX.json from going stale when agents create handoffs,
|
|
7
|
+
* plans, research, reminders, objectives, learnings, or decisions.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
"use strict";
|
|
11
|
+
|
|
12
|
+
const fs = require("fs");
|
|
13
|
+
const path = require("path");
|
|
14
|
+
|
|
15
|
+
const PROJECT_DIR = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
16
|
+
const THOUGHTS_PATH = path.join(PROJECT_DIR, ".merlin-core", "thoughts");
|
|
17
|
+
const THOUGHTS_SHARED = path.join(THOUGHTS_PATH, "shared");
|
|
18
|
+
|
|
19
|
+
function main() {
|
|
20
|
+
// Read tool input from stdin (try fd 0 directly for Windows compatibility)
|
|
21
|
+
let input;
|
|
22
|
+
try {
|
|
23
|
+
const raw = fs.readFileSync(0, "utf8");
|
|
24
|
+
input = JSON.parse(raw);
|
|
25
|
+
} catch {
|
|
26
|
+
process.exit(0);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const toolName = input.tool_name || "";
|
|
30
|
+
|
|
31
|
+
// Only trigger on Write and Edit
|
|
32
|
+
if (toolName !== "Write" && toolName !== "Edit") {
|
|
33
|
+
process.exit(0);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Extract file path from tool input
|
|
37
|
+
const filePath = input.tool_input?.file_path;
|
|
38
|
+
if (!filePath) {
|
|
39
|
+
process.exit(0);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Normalize path separators for Windows compatibility
|
|
43
|
+
const normalizedFile = filePath.replace(/\\/g, "/").toLowerCase();
|
|
44
|
+
const normalizedShared = THOUGHTS_SHARED.replace(/\\/g, "/").toLowerCase();
|
|
45
|
+
|
|
46
|
+
// Only trigger if the file is inside thoughts/shared/
|
|
47
|
+
if (!normalizedFile.startsWith(normalizedShared)) {
|
|
48
|
+
process.exit(0);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Skip if the file IS INDEX.json or INDEX.md (avoid infinite loop)
|
|
52
|
+
const basename = path.basename(filePath);
|
|
53
|
+
if (basename === "INDEX.json" || basename === "INDEX.md") {
|
|
54
|
+
process.exit(0);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Rebuild the index
|
|
58
|
+
try {
|
|
59
|
+
const { writeIndex } = require(
|
|
60
|
+
path.join(
|
|
61
|
+
PROJECT_DIR,
|
|
62
|
+
".merlin-core",
|
|
63
|
+
"core",
|
|
64
|
+
"alkimia",
|
|
65
|
+
"memory",
|
|
66
|
+
"thoughts-indexer.js",
|
|
67
|
+
),
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
const index = writeIndex(THOUGHTS_PATH);
|
|
71
|
+
console.log(
|
|
72
|
+
`[Thoughts Index] Auto-rebuilt: ${index.entries.length} entries indexed after ${basename} change.`,
|
|
73
|
+
);
|
|
74
|
+
} catch (err) {
|
|
75
|
+
// Non-fatal — log but don't block the agent
|
|
76
|
+
console.error(`[Thoughts Index] Failed to rebuild index: ${err.message}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
main();
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Merlin Constitution Rules
|
|
2
|
+
|
|
3
|
+
These rules enforce the 7 Merlin Constitution principles.
|
|
4
|
+
|
|
5
|
+
## Article I: CLI First
|
|
6
|
+
- The CLI is the source of truth for all operations
|
|
7
|
+
- UI and IDE integrations observe CLI state, never modify directly
|
|
8
|
+
|
|
9
|
+
## Article III: Spec-Driven Development
|
|
10
|
+
- Always research before planning
|
|
11
|
+
- Always plan before implementing
|
|
12
|
+
- Never write code without a spec or plan
|
|
13
|
+
|
|
14
|
+
## Article IV: No Invention
|
|
15
|
+
- All specifications must trace to requirements
|
|
16
|
+
- Never invent features from imagination
|
|
17
|
+
- If a requirement isn't documented, ask for clarification
|
|
18
|
+
|
|
19
|
+
## Article V: Quality First
|
|
20
|
+
- Run lint, test, and build after implementation
|
|
21
|
+
- Dual criteria: automated checks + manual review
|
|
22
|
+
- Never skip quality gates
|
|
23
|
+
|
|
24
|
+
## Article VII: Human Gates
|
|
25
|
+
- HIGH-stake actions (deploy production, force push) require explicit human approval
|
|
26
|
+
- MEDIUM-stake actions (push, PR, package install) require confirmation
|
|
27
|
+
- LOW-stake actions (commit, file changes, test runs) auto-approve with logging
|