@codemieai/code 0.0.45 → 0.0.47
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/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +20 -3
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/core/metrics/types.d.ts +0 -6
- package/dist/agents/core/metrics/types.d.ts.map +1 -1
- package/dist/agents/core/session/BaseSessionAdapter.d.ts +0 -6
- package/dist/agents/core/session/BaseSessionAdapter.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin-installer.d.ts +0 -11
- package/dist/agents/plugins/claude/claude.plugin-installer.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin-installer.js +0 -32
- package/dist/agents/plugins/claude/claude.plugin-installer.js.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +1 -1
- package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.session.js +1 -28
- package/dist/agents/plugins/claude/claude.session.js.map +1 -1
- package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/agents/plugins/claude/plugin/README.md +1 -14
- package/dist/agents/plugins/claude/plugin/hooks/hooks.json +4 -4
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/SKILL.md +206 -0
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-agent.md +45 -0
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-claude-md-snippet.md +40 -0
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-command.md +30 -0
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-hooks.json +23 -0
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-skill.md +48 -0
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-agent.md +145 -0
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-claude-md-snippet.md +126 -0
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-command.md +170 -0
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-hooks.json +46 -0
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-skill.md +144 -0
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/sample-report.md +223 -0
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/references/best-practices.md +510 -0
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/references/component-checklists.md +413 -0
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/scripts/scan-repo.sh +162 -0
- package/dist/agents/plugins/claude/plugin/skills/msgraph/README.md +183 -0
- package/dist/agents/plugins/claude/plugin/skills/msgraph/SKILL.md +233 -0
- package/dist/agents/plugins/claude/plugin/skills/msgraph/scripts/msgraph.py +785 -0
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +3 -78
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +7 -16
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -1
- package/dist/agents/plugins/claude/sounds-installer.d.ts +1 -1
- package/dist/agents/plugins/claude/sounds-installer.d.ts.map +1 -1
- package/dist/agents/plugins/claude/sounds-installer.js +1 -4
- package/dist/agents/plugins/claude/sounds-installer.js.map +1 -1
- package/dist/agents/plugins/codemie-code.plugin.d.ts +1 -4
- package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codemie-code.plugin.js +26 -81
- package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
- package/dist/agents/plugins/gemini/gemini.session-adapter.d.ts +1 -8
- package/dist/agents/plugins/gemini/gemini.session-adapter.d.ts.map +1 -1
- package/dist/agents/plugins/gemini/gemini.session-adapter.js +2 -30
- package/dist/agents/plugins/gemini/gemini.session-adapter.js.map +1 -1
- package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.d.ts.map +1 -1
- package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js +2 -8
- package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js.map +1 -1
- package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.d.ts.map +1 -1
- package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js +0 -7
- package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js.map +1 -1
- package/dist/agents/plugins/opencode/index.d.ts +1 -1
- package/dist/agents/plugins/opencode/index.d.ts.map +1 -1
- package/dist/agents/plugins/opencode/index.js.map +1 -1
- package/dist/agents/plugins/opencode/opencode-message-types.d.ts +2 -22
- package/dist/agents/plugins/opencode/opencode-message-types.d.ts.map +1 -1
- package/dist/agents/plugins/opencode/opencode-message-types.js.map +1 -1
- package/dist/agents/plugins/opencode/opencode.session.d.ts.map +1 -1
- package/dist/agents/plugins/opencode/opencode.session.js +5 -30
- package/dist/agents/plugins/opencode/opencode.session.js.map +1 -1
- package/dist/agents/plugins/opencode/opencode.sqlite-reader.d.ts.map +1 -1
- package/dist/agents/plugins/opencode/opencode.sqlite-reader.js +0 -2
- package/dist/agents/plugins/opencode/opencode.sqlite-reader.js.map +1 -1
- package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts +0 -8
- package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts.map +1 -1
- package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js +8 -97
- package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js.map +1 -1
- package/dist/cli/commands/analytics/aggregator.d.ts +0 -8
- package/dist/cli/commands/analytics/aggregator.d.ts.map +1 -1
- package/dist/cli/commands/analytics/aggregator.js +5 -100
- package/dist/cli/commands/analytics/aggregator.js.map +1 -1
- package/dist/cli/commands/analytics/data-loader.d.ts +0 -7
- package/dist/cli/commands/analytics/data-loader.d.ts.map +1 -1
- package/dist/cli/commands/analytics/data-loader.js +3 -10
- package/dist/cli/commands/analytics/data-loader.js.map +1 -1
- package/dist/cli/commands/analytics/exporter.d.ts.map +1 -1
- package/dist/cli/commands/analytics/exporter.js +0 -12
- package/dist/cli/commands/analytics/exporter.js.map +1 -1
- package/dist/cli/commands/analytics/formatter.d.ts.map +1 -1
- package/dist/cli/commands/analytics/formatter.js +0 -9
- package/dist/cli/commands/analytics/formatter.js.map +1 -1
- package/dist/cli/commands/analytics/types.d.ts +0 -17
- package/dist/cli/commands/analytics/types.d.ts.map +1 -1
- package/dist/cli/commands/assistants/chat/historyLoader.d.ts +22 -0
- package/dist/cli/commands/assistants/chat/historyLoader.d.ts.map +1 -0
- package/dist/cli/commands/assistants/chat/historyLoader.js +80 -0
- package/dist/cli/commands/assistants/chat/historyLoader.js.map +1 -0
- package/dist/cli/commands/assistants/{chat.d.ts → chat/index.d.ts} +1 -1
- package/dist/cli/commands/assistants/chat/index.d.ts.map +1 -0
- package/dist/cli/commands/assistants/{chat.js → chat/index.js} +54 -45
- package/dist/cli/commands/assistants/chat/index.js.map +1 -0
- package/dist/cli/commands/assistants/chat/types.d.ts +27 -0
- package/dist/cli/commands/assistants/chat/types.d.ts.map +1 -0
- package/dist/cli/commands/assistants/chat/types.js +5 -0
- package/dist/cli/commands/assistants/chat/types.js.map +1 -0
- package/dist/cli/commands/assistants/chat/utils.d.ts +12 -0
- package/dist/cli/commands/assistants/chat/utils.d.ts.map +1 -0
- package/dist/cli/commands/assistants/chat/utils.js +24 -0
- package/dist/cli/commands/assistants/chat/utils.js.map +1 -0
- package/dist/cli/commands/assistants/constants.d.ts +1 -0
- package/dist/cli/commands/assistants/constants.d.ts.map +1 -1
- package/dist/cli/commands/assistants/constants.js.map +1 -1
- package/dist/cli/commands/assistants/index.js +2 -2
- package/dist/cli/commands/assistants/index.js.map +1 -1
- package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.js +1 -1
- package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.js +1 -1
- package/dist/cli/commands/assistants/setup/index.js +4 -4
- package/dist/cli/commands/assistants/setup/index.js.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/index.d.ts +1 -1
- package/dist/cli/commands/assistants/setup/selection/index.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/index.js +5 -3
- package/dist/cli/commands/assistants/setup/selection/index.js.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/interactive-prompt.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/interactive-prompt.js +7 -1
- package/dist/cli/commands/assistants/setup/selection/interactive-prompt.js.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/types.d.ts +2 -0
- package/dist/cli/commands/assistants/setup/selection/types.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/ui.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/ui.js +15 -4
- package/dist/cli/commands/assistants/setup/selection/ui.js.map +1 -1
- package/dist/cli/commands/hook.js +1 -1
- package/dist/cli/commands/hook.js.map +1 -1
- package/dist/cli/commands/plugin.d.ts +16 -0
- package/dist/cli/commands/plugin.d.ts.map +1 -0
- package/dist/cli/commands/plugin.js +210 -0
- package/dist/cli/commands/plugin.js.map +1 -0
- package/dist/cli/commands/setup.js +1 -1
- package/dist/cli/commands/skill.d.ts.map +1 -1
- package/dist/cli/commands/skill.js +3 -1
- package/dist/cli/commands/skill.js.map +1 -1
- package/dist/cli/commands/sound.d.ts +3 -0
- package/dist/cli/commands/sound.d.ts.map +1 -0
- package/dist/cli/commands/sound.js +87 -0
- package/dist/cli/commands/sound.js.map +1 -0
- package/dist/cli/commands/test-metrics.js +3 -5
- package/dist/cli/commands/test-metrics.js.map +1 -1
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/env/types.d.ts +8 -0
- package/dist/env/types.d.ts.map +1 -1
- package/dist/env/types.js.map +1 -1
- package/dist/plugins/core/index.d.ts +13 -0
- package/dist/plugins/core/index.d.ts.map +1 -0
- package/dist/plugins/core/index.js +15 -0
- package/dist/plugins/core/index.js.map +1 -0
- package/dist/plugins/core/manifest-parser.d.ts +28 -0
- package/dist/plugins/core/manifest-parser.d.ts.map +1 -0
- package/dist/plugins/core/manifest-parser.js +137 -0
- package/dist/plugins/core/manifest-parser.js.map +1 -0
- package/dist/plugins/core/plugin-cache.d.ts +65 -0
- package/dist/plugins/core/plugin-cache.d.ts.map +1 -0
- package/dist/plugins/core/plugin-cache.js +170 -0
- package/dist/plugins/core/plugin-cache.js.map +1 -0
- package/dist/plugins/core/plugin-loader.d.ts +21 -0
- package/dist/plugins/core/plugin-loader.d.ts.map +1 -0
- package/dist/plugins/core/plugin-loader.js +55 -0
- package/dist/plugins/core/plugin-loader.js.map +1 -0
- package/dist/plugins/core/plugin-resolver.d.ts +33 -0
- package/dist/plugins/core/plugin-resolver.d.ts.map +1 -0
- package/dist/plugins/core/plugin-resolver.js +118 -0
- package/dist/plugins/core/plugin-resolver.js.map +1 -0
- package/dist/plugins/core/types.d.ts +183 -0
- package/dist/plugins/core/types.d.ts.map +1 -0
- package/dist/plugins/core/types.js +22 -0
- package/dist/plugins/core/types.js.map +1 -0
- package/dist/plugins/loaders/agents-loader.d.ts +19 -0
- package/dist/plugins/loaders/agents-loader.d.ts.map +1 -0
- package/dist/plugins/loaders/agents-loader.js +92 -0
- package/dist/plugins/loaders/agents-loader.js.map +1 -0
- package/dist/plugins/loaders/hooks-loader.d.ts +27 -0
- package/dist/plugins/loaders/hooks-loader.d.ts.map +1 -0
- package/dist/plugins/loaders/hooks-loader.js +94 -0
- package/dist/plugins/loaders/hooks-loader.js.map +1 -0
- package/dist/plugins/loaders/mcp-loader.d.ts +24 -0
- package/dist/plugins/loaders/mcp-loader.d.ts.map +1 -0
- package/dist/plugins/loaders/mcp-loader.js +86 -0
- package/dist/plugins/loaders/mcp-loader.js.map +1 -0
- package/dist/plugins/loaders/skills-loader.d.ts +30 -0
- package/dist/plugins/loaders/skills-loader.d.ts.map +1 -0
- package/dist/plugins/loaders/skills-loader.js +167 -0
- package/dist/plugins/loaders/skills-loader.js.map +1 -0
- package/dist/providers/plugins/bedrock/bedrock.template.js +1 -1
- package/dist/providers/plugins/jwt/jwt.setup-steps.js +1 -1
- package/dist/providers/plugins/jwt/jwt.template.js +1 -1
- package/dist/providers/plugins/litellm/litellm.template.js +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js +10 -0
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/proxy-types.d.ts +3 -0
- package/dist/providers/plugins/sso/proxy/proxy-types.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/SessionSyncer.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/SessionSyncer.js +2 -3
- package/dist/providers/plugins/sso/session/SessionSyncer.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/apiClient.d.ts +21 -0
- package/dist/providers/plugins/sso/session/processors/conversations/apiClient.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/apiClient.js +159 -0
- package/dist/providers/plugins/sso/session/processors/conversations/apiClient.js.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/constants.d.ts +24 -0
- package/dist/providers/plugins/sso/session/processors/conversations/constants.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/constants.js +36 -0
- package/dist/providers/plugins/sso/session/processors/conversations/constants.js.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.d.ts +19 -0
- package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/{conversation-sync-processor.js → syncProcessor.js} +48 -33
- package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/{conversation-types.d.ts → types.d.ts} +14 -2
- package/dist/providers/plugins/sso/session/processors/conversations/types.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/types.js +14 -0
- package/dist/providers/plugins/sso/session/processors/conversations/types.js.map +1 -0
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js +16 -17
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts +3 -3
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js +8 -38
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js +2 -6
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.d.ts +49 -31
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.template.js +1 -1
- package/dist/{agents/codemie-code/skills → skills}/core/SkillDiscovery.d.ts +10 -0
- package/dist/skills/core/SkillDiscovery.d.ts.map +1 -0
- package/dist/{agents/codemie-code/skills → skills}/core/SkillDiscovery.js +64 -7
- package/dist/skills/core/SkillDiscovery.js.map +1 -0
- package/dist/skills/core/SkillManager.d.ts.map +1 -0
- package/dist/{agents/codemie-code/skills → skills}/core/SkillManager.js +15 -10
- package/dist/skills/core/SkillManager.js.map +1 -0
- package/dist/{agents/codemie-code/skills → skills}/core/types.d.ts +3 -25
- package/dist/skills/core/types.d.ts.map +1 -0
- package/dist/skills/core/types.js.map +1 -0
- package/dist/{agents/codemie-code/skills → skills}/index.d.ts +3 -3
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/{agents/codemie-code/skills → skills}/index.js +2 -2
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/sync/SkillSync.d.ts.map +1 -0
- package/dist/{agents/codemie-code/skills → skills}/sync/SkillSync.js +5 -3
- package/dist/skills/sync/SkillSync.js.map +1 -0
- package/dist/{agents/codemie-code/skills → skills}/utils/content-loader.d.ts +2 -12
- package/dist/skills/utils/content-loader.d.ts.map +1 -0
- package/dist/{agents/codemie-code/skills → skills}/utils/content-loader.js +3 -8
- package/dist/skills/utils/content-loader.js.map +1 -0
- package/dist/skills/utils/pattern-matcher.d.ts.map +1 -0
- package/dist/skills/utils/pattern-matcher.js.map +1 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/package.json +1 -1
- package/dist/agents/codemie-code/agent.d.ts +0 -129
- package/dist/agents/codemie-code/agent.d.ts.map +0 -1
- package/dist/agents/codemie-code/agent.js +0 -1106
- package/dist/agents/codemie-code/agent.js.map +0 -1
- package/dist/agents/codemie-code/config.d.ts +0 -40
- package/dist/agents/codemie-code/config.d.ts.map +0 -1
- package/dist/agents/codemie-code/config.js +0 -293
- package/dist/agents/codemie-code/config.js.map +0 -1
- package/dist/agents/codemie-code/filters.d.ts +0 -91
- package/dist/agents/codemie-code/filters.d.ts.map +0 -1
- package/dist/agents/codemie-code/filters.js +0 -328
- package/dist/agents/codemie-code/filters.js.map +0 -1
- package/dist/agents/codemie-code/index.d.ts +0 -93
- package/dist/agents/codemie-code/index.d.ts.map +0 -1
- package/dist/agents/codemie-code/index.js +0 -359
- package/dist/agents/codemie-code/index.js.map +0 -1
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts +0 -87
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts.map +0 -1
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js +0 -957
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js.map +0 -1
- package/dist/agents/codemie-code/modes/planMode.d.ts +0 -116
- package/dist/agents/codemie-code/modes/planMode.d.ts.map +0 -1
- package/dist/agents/codemie-code/modes/planMode.js +0 -537
- package/dist/agents/codemie-code/modes/planMode.js.map +0 -1
- package/dist/agents/codemie-code/prompts.d.ts +0 -47
- package/dist/agents/codemie-code/prompts.d.ts.map +0 -1
- package/dist/agents/codemie-code/prompts.js +0 -207
- package/dist/agents/codemie-code/prompts.js.map +0 -1
- package/dist/agents/codemie-code/skills/core/SkillDiscovery.d.ts.map +0 -1
- package/dist/agents/codemie-code/skills/core/SkillDiscovery.js.map +0 -1
- package/dist/agents/codemie-code/skills/core/SkillManager.d.ts.map +0 -1
- package/dist/agents/codemie-code/skills/core/SkillManager.js.map +0 -1
- package/dist/agents/codemie-code/skills/core/types.d.ts.map +0 -1
- package/dist/agents/codemie-code/skills/core/types.js.map +0 -1
- package/dist/agents/codemie-code/skills/index.d.ts.map +0 -1
- package/dist/agents/codemie-code/skills/index.js.map +0 -1
- package/dist/agents/codemie-code/skills/sync/SkillSync.d.ts.map +0 -1
- package/dist/agents/codemie-code/skills/sync/SkillSync.js.map +0 -1
- package/dist/agents/codemie-code/skills/utils/content-loader.d.ts.map +0 -1
- package/dist/agents/codemie-code/skills/utils/content-loader.js.map +0 -1
- package/dist/agents/codemie-code/skills/utils/frontmatter.d.ts.map +0 -1
- package/dist/agents/codemie-code/skills/utils/frontmatter.js.map +0 -1
- package/dist/agents/codemie-code/skills/utils/pattern-matcher.d.ts.map +0 -1
- package/dist/agents/codemie-code/skills/utils/pattern-matcher.js.map +0 -1
- package/dist/agents/codemie-code/storage/todoStorage.d.ts +0 -78
- package/dist/agents/codemie-code/storage/todoStorage.d.ts.map +0 -1
- package/dist/agents/codemie-code/storage/todoStorage.js +0 -225
- package/dist/agents/codemie-code/storage/todoStorage.js.map +0 -1
- package/dist/agents/codemie-code/tokenUtils.d.ts +0 -108
- package/dist/agents/codemie-code/tokenUtils.d.ts.map +0 -1
- package/dist/agents/codemie-code/tokenUtils.js +0 -220
- package/dist/agents/codemie-code/tokenUtils.js.map +0 -1
- package/dist/agents/codemie-code/toolMetadata.d.ts +0 -15
- package/dist/agents/codemie-code/toolMetadata.d.ts.map +0 -1
- package/dist/agents/codemie-code/toolMetadata.js +0 -316
- package/dist/agents/codemie-code/toolMetadata.js.map +0 -1
- package/dist/agents/codemie-code/tools/assistant-invocation.d.ts +0 -47
- package/dist/agents/codemie-code/tools/assistant-invocation.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/assistant-invocation.js +0 -129
- package/dist/agents/codemie-code/tools/assistant-invocation.js.map +0 -1
- package/dist/agents/codemie-code/tools/index.d.ts +0 -111
- package/dist/agents/codemie-code/tools/index.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/index.js +0 -424
- package/dist/agents/codemie-code/tools/index.js.map +0 -1
- package/dist/agents/codemie-code/tools/planning.d.ts +0 -54
- package/dist/agents/codemie-code/tools/planning.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/planning.js +0 -226
- package/dist/agents/codemie-code/tools/planning.js.map +0 -1
- package/dist/agents/codemie-code/types.d.ts +0 -459
- package/dist/agents/codemie-code/types.d.ts.map +0 -1
- package/dist/agents/codemie-code/types.js +0 -59
- package/dist/agents/codemie-code/types.js.map +0 -1
- package/dist/agents/codemie-code/ui/autocomplete.d.ts +0 -98
- package/dist/agents/codemie-code/ui/autocomplete.d.ts.map +0 -1
- package/dist/agents/codemie-code/ui/autocomplete.js +0 -145
- package/dist/agents/codemie-code/ui/autocomplete.js.map +0 -1
- package/dist/agents/codemie-code/ui/keyHandlers.d.ts +0 -112
- package/dist/agents/codemie-code/ui/keyHandlers.d.ts.map +0 -1
- package/dist/agents/codemie-code/ui/keyHandlers.js +0 -415
- package/dist/agents/codemie-code/ui/keyHandlers.js.map +0 -1
- package/dist/agents/codemie-code/ui/mentions.d.ts +0 -86
- package/dist/agents/codemie-code/ui/mentions.d.ts.map +0 -1
- package/dist/agents/codemie-code/ui/mentions.js +0 -122
- package/dist/agents/codemie-code/ui/mentions.js.map +0 -1
- package/dist/agents/codemie-code/ui/progressTracker.d.ts +0 -125
- package/dist/agents/codemie-code/ui/progressTracker.d.ts.map +0 -1
- package/dist/agents/codemie-code/ui/progressTracker.js +0 -343
- package/dist/agents/codemie-code/ui/progressTracker.js.map +0 -1
- package/dist/agents/codemie-code/ui/terminalCodes.d.ts +0 -38
- package/dist/agents/codemie-code/ui/terminalCodes.d.ts.map +0 -1
- package/dist/agents/codemie-code/ui/terminalCodes.js +0 -42
- package/dist/agents/codemie-code/ui/terminalCodes.js.map +0 -1
- package/dist/agents/codemie-code/ui/todoPanel.d.ts +0 -112
- package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +0 -1
- package/dist/agents/codemie-code/ui/todoPanel.js +0 -321
- package/dist/agents/codemie-code/ui/todoPanel.js.map +0 -1
- package/dist/agents/codemie-code/ui.d.ts +0 -180
- package/dist/agents/codemie-code/ui.d.ts.map +0 -1
- package/dist/agents/codemie-code/ui.js +0 -1345
- package/dist/agents/codemie-code/ui.js.map +0 -1
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts +0 -87
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts.map +0 -1
- package/dist/agents/codemie-code/utils/progressionEnforcer.js +0 -293
- package/dist/agents/codemie-code/utils/progressionEnforcer.js.map +0 -1
- package/dist/agents/codemie-code/utils/todoParser.d.ts +0 -41
- package/dist/agents/codemie-code/utils/todoParser.d.ts.map +0 -1
- package/dist/agents/codemie-code/utils/todoParser.js +0 -305
- package/dist/agents/codemie-code/utils/todoParser.js.map +0 -1
- package/dist/agents/codemie-code/utils/todoValidator.d.ts +0 -65
- package/dist/agents/codemie-code/utils/todoValidator.d.ts.map +0 -1
- package/dist/agents/codemie-code/utils/todoValidator.js +0 -249
- package/dist/agents/codemie-code/utils/todoValidator.js.map +0 -1
- package/dist/agents/codemie-code/validators/planValidator.d.ts +0 -94
- package/dist/agents/codemie-code/validators/planValidator.d.ts.map +0 -1
- package/dist/agents/codemie-code/validators/planValidator.js +0 -281
- package/dist/agents/codemie-code/validators/planValidator.js.map +0 -1
- package/dist/agents/plugins/claude/plugin/hooks/hooks.windows.json +0 -98
- package/dist/agents/plugins/claude/plugin/sounds/play-random-sound.ps1 +0 -112
- package/dist/agents/plugins/claude/plugin/sounds/play-random-sound.sh +0 -58
- package/dist/agents/plugins/gemini/session/utils/token-aggregator.d.ts +0 -26
- package/dist/agents/plugins/gemini/session/utils/token-aggregator.d.ts.map +0 -1
- package/dist/agents/plugins/gemini/session/utils/token-aggregator.js +0 -38
- package/dist/agents/plugins/gemini/session/utils/token-aggregator.js.map +0 -1
- package/dist/cli/commands/assistants/chat.d.ts.map +0 -1
- package/dist/cli/commands/assistants/chat.js.map +0 -1
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.d.ts +0 -26
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.d.ts.map +0 -1
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.js +0 -146
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.js.map +0 -1
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts +0 -22
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts.map +0 -1
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.js.map +0 -1
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.d.ts.map +0 -1
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.js +0 -7
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.js.map +0 -1
- /package/dist/{agents/codemie-code/skills → skills}/core/SkillManager.d.ts +0 -0
- /package/dist/{agents/codemie-code/skills → skills}/core/types.js +0 -0
- /package/dist/{agents/codemie-code/skills → skills}/sync/SkillSync.d.ts +0 -0
- /package/dist/{agents/codemie-code/skills → skills}/utils/pattern-matcher.d.ts +0 -0
- /package/dist/{agents/codemie-code/skills → skills}/utils/pattern-matcher.js +0 -0
- /package/dist/{agents/codemie-code/skills/utils → utils}/frontmatter.d.ts +0 -0
- /package/dist/{agents/codemie-code/skills/utils → utils}/frontmatter.js +0 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: claude-setup-audit
|
|
3
|
+
description: This skill should be used when the user asks to "audit my claude setup", "check my claude configuration", "assess my claude code setup", "audit claude", "review my .claude folder", "is my claude setup correct", "check repo health", "assess my skills quality", "review my agents", "check my CLAUDE.md", "validate my hooks", "audit claude configuration", "check my MCP config", "how good is my claude setup", "scan my .claude folder", or wants a comprehensive quality assessment of all Claude Code components in a repository. Evaluates skills, subagents, CLAUDE.md rules, commands, hooks, and MCP configuration against established best practices. Produces a graded health report (A–F per component) with good/bad example references and prioritized recommendations.
|
|
4
|
+
allowed-tools: [Read, Grep, Glob, Bash, Write]
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
tags: [quality, audit, claude-setup, assessment, production-readiness]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Claude Setup Audit
|
|
10
|
+
|
|
11
|
+
Comprehensive quality assessment of Claude Code configuration and components in a repository. Evaluates skills, agents, CLAUDE.md rules, commands, hooks, and MCP configuration against established best practices. Produces a graded health report with concrete good/bad example references and actionable fixes.
|
|
12
|
+
|
|
13
|
+
## Assessment Scope
|
|
14
|
+
|
|
15
|
+
| Component | Primary Locations | Max Score |
|
|
16
|
+
|-----------|------------------|-----------|
|
|
17
|
+
| **Skills** | `.claude/skills/*/SKILL.md`, `plugins/*/skills/*/SKILL.md` | 32 pts each |
|
|
18
|
+
| **Agents** | `.claude/agents/*.md`, `plugins/*/agents/*.md` | 32 pts each |
|
|
19
|
+
| **CLAUDE.md** | `CLAUDE.md`, `.claude/CLAUDE.md`, `**/CLAUDE.md` (subdirs), `CLAUDE.local.md` | 36 pts each |
|
|
20
|
+
| **Commands** | `.claude/commands/**/*.md`, `plugins/*/commands/**/*.md` | 20 pts each |
|
|
21
|
+
| **Hooks** | `.claude/settings.json` (hooks array) | 20 pts total |
|
|
22
|
+
| **MCP Config** | `.mcp.json`, `.claude/mcp.json` | 20 pts |
|
|
23
|
+
|
|
24
|
+
## 5-Phase Workflow
|
|
25
|
+
|
|
26
|
+
### Phase 1: Discovery
|
|
27
|
+
|
|
28
|
+
Run `scripts/scan-repo.sh` or manually scan:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
find . \( \
|
|
32
|
+
-path '*/.claude/agents/*.md' -o \
|
|
33
|
+
-path '*/skills/*/SKILL.md' -o \
|
|
34
|
+
-path '*/.claude/commands/**/*.md' -o \
|
|
35
|
+
-name 'CLAUDE.md' -o \
|
|
36
|
+
-name 'CLAUDE.local.md' -o \
|
|
37
|
+
-name '.mcp.json' -o \
|
|
38
|
+
-path '*/.claude/settings.json' \
|
|
39
|
+
\) -not -path '*/node_modules/*' 2>/dev/null
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**CLAUDE.md knowledge organisation scan** (run separately):
|
|
43
|
+
```bash
|
|
44
|
+
# Find all CLAUDE.md files
|
|
45
|
+
find . -name 'CLAUDE.md' -o -name 'CLAUDE.local.md' \
|
|
46
|
+
| grep -v node_modules | sort
|
|
47
|
+
|
|
48
|
+
# Find dedicated guide directories
|
|
49
|
+
find . -type d \( -name 'guides' -o -name 'references' -o -name '.codemie' \) \
|
|
50
|
+
| grep -v node_modules | sort
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Detect which pattern is in use** — both are valid, mutually exclusive:
|
|
54
|
+
|
|
55
|
+
| Pattern | Signals | Scoring note |
|
|
56
|
+
|---------|---------|-------------|
|
|
57
|
+
| **A — Single CLAUDE.md + Guide Files** | 1 CLAUDE.md at root + guide files in `guides/`, `.codemie/guides/`, `references/`, `docs/` | R5.3 full credit if CLAUDE.md references guide paths |
|
|
58
|
+
| **B — Hierarchical CLAUDE.md** | Multiple CLAUDE.md files at different directory depths | R5.3 N/A (hierarchy IS the delegation); run hierarchy checks |
|
|
59
|
+
|
|
60
|
+
Print discovery summary:
|
|
61
|
+
```
|
|
62
|
+
Found: X skills, Y agents, Z commands
|
|
63
|
+
CLAUDE.md pattern: A (single + guides) | B (hierarchical) | unknown
|
|
64
|
+
CLAUDE.md locations: [list each path found]
|
|
65
|
+
Guide dirs: [list if present]
|
|
66
|
+
Hooks: ✓/✗ | MCP: ✓/✗
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Phase 2: Per-Component Scoring
|
|
70
|
+
|
|
71
|
+
Apply checklists from `references/component-checklists.md`. Mark each criterion:
|
|
72
|
+
- ✅ **Pass** — full points
|
|
73
|
+
- ⚠️ **Partial** — half points (present but incomplete or weak)
|
|
74
|
+
- ❌ **Fail** — 0 points
|
|
75
|
+
|
|
76
|
+
**Skills — classify type first, then score**:
|
|
77
|
+
|
|
78
|
+
> **Before scoring any skill, detect its type:**
|
|
79
|
+
> ```bash
|
|
80
|
+
> grep -i "codemie.*assistant\|codemie.*chat\|assistants chat" SKILL.md
|
|
81
|
+
> ```
|
|
82
|
+
> - **Match found** → **Codemie-delegating skill** (API wrapper): applies reduced rubric (21 pts max)
|
|
83
|
+
> - **No match** → **Standard skill**: full 32-pt rubric applies
|
|
84
|
+
|
|
85
|
+
**Standard Skills (32 pts max)**:
|
|
86
|
+
- Structure (3×): Valid SKILL.md filename, `[a-z0-9-]+` name, description >20 chars, `allowed-tools` field
|
|
87
|
+
- Content (2×): Methodology/workflow section, output format, examples, checklists (`- [ ]`)
|
|
88
|
+
- Technical (1×): No absolute paths, no hardcoded UUIDs/secrets, dependencies documented
|
|
89
|
+
- Design (2×): Single responsibility, "When to use" triggers, no >50% overlap, <8K tokens
|
|
90
|
+
|
|
91
|
+
**Codemie-delegating Skills (21 pts max — exemptions apply)**:
|
|
92
|
+
- Structure (3×): Valid SKILL.md, valid name, description >20 chars — `allowed-tools` is **N/A** (no local tool execution)
|
|
93
|
+
- Content: **All content criteria N/A** — output format, workflow, examples, checklists are determined by the backend assistant
|
|
94
|
+
- Technical (1×): No absolute paths, no secrets, deps documented
|
|
95
|
+
- Design (2×): Single responsibility, "When to use" triggers, no overlap, token budget
|
|
96
|
+
- Score = (pts obtained / 21) × 100 — **do not penalise for exempted criteria**
|
|
97
|
+
|
|
98
|
+
**Agents (32 pts max)**:
|
|
99
|
+
- Identity (3×): Descriptive name, description has "when"/"use"/"trigger" keywords, model specified, tools justified
|
|
100
|
+
- Prompt Quality (2×): "You are…" role statement, output format section, scope/limits, anti-hallucination keywords
|
|
101
|
+
- Validation (1×): 3+ examples, edge cases, error handling described
|
|
102
|
+
- Design (2×): Single responsibility, composable (references skills), <8K tokens
|
|
103
|
+
|
|
104
|
+
**CLAUDE.md Rules (36 pts max)**:
|
|
105
|
+
- Coverage (3×): Coding standards, workflow policies, explicit critical rules with triggers
|
|
106
|
+
- Clarity (3×): Actionable instructions, trigger conditions stated, prohibitions explicit
|
|
107
|
+
- Structure (2×): Section organization, quick-reference tables, correct/incorrect pattern examples
|
|
108
|
+
- Maintenance (1×): No contradictions, technology versions noted, project context stated
|
|
109
|
+
- Efficiency (2×): Concise body (≤400 non-code words), no anti-pattern noise, delegates detail via `@import`
|
|
110
|
+
|
|
111
|
+
**CLAUDE.md hierarchy** — score each file separately, then run hierarchy analysis (Phase 3).
|
|
112
|
+
|
|
113
|
+
**Commands (20 pts max)**:
|
|
114
|
+
- Structure (3×): Frontmatter (name + description), `argument-hint` if uses `$ARGUMENTS`, numbered phases, usage examples
|
|
115
|
+
- Quality (2×): Error/failure handling, output format defined, validation gates, argument parsing shown
|
|
116
|
+
|
|
117
|
+
**Hooks (20 pts max)**:
|
|
118
|
+
- Validity (3×): Valid JSON, recognized event types, valid matchers
|
|
119
|
+
- Security (2×): No hardcoded credentials, bash scripts use `set -e`/`trap`
|
|
120
|
+
- Quality (2×): Hook purpose documented, tool restriction scope appropriate
|
|
121
|
+
|
|
122
|
+
**MCP Config (20 pts max)**:
|
|
123
|
+
- Structure (3×): Valid JSON, `mcpServers` key, each server has `command`/`url` + type
|
|
124
|
+
- Security (2×): No hardcoded tokens/passwords, env vars used for credentials
|
|
125
|
+
- Documentation (2×): Descriptive server names, required env vars listed
|
|
126
|
+
|
|
127
|
+
### Phase 3: Cross-Component Analysis
|
|
128
|
+
|
|
129
|
+
After individual scoring, check repository-wide health:
|
|
130
|
+
|
|
131
|
+
1. **Coverage gaps** — CLAUDE.md present if agents exist? Skills referenced by agents available?
|
|
132
|
+
2. **Naming consistency** — All files use `lowercase-kebab-case`?
|
|
133
|
+
3. **Duplication** — Any agents/skills with >50% description keyword overlap?
|
|
134
|
+
4. **Security sweep** — Grep all `.claude/` content for `/Users/`, `/home/`, `password=`, `api_key`, `token=`
|
|
135
|
+
5. **Integration** — Agents reference the skills they use? Commands invoke relevant agents?
|
|
136
|
+
6. **CLAUDE.md knowledge organisation analysis** — see checklist in `references/component-checklists.md` (Pattern A and B checks are separate)
|
|
137
|
+
|
|
138
|
+
### Phase 4: Grading
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
Component Score = (Points Obtained / Max Points) × 100
|
|
142
|
+
Overall Score = Average of all component scores
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
| Grade | Range | Label |
|
|
146
|
+
|-------|-------|-------|
|
|
147
|
+
| A | 90–100% | Production-ready |
|
|
148
|
+
| B | 80–89% | Good — meets production threshold |
|
|
149
|
+
| C | 70–79% | Needs improvement |
|
|
150
|
+
| D | 60–69% | Significant gaps |
|
|
151
|
+
| F | <60% | Critical issues — rewrite needed |
|
|
152
|
+
|
|
153
|
+
**Production threshold**: Grade B (≥80%) required per component.
|
|
154
|
+
|
|
155
|
+
### Phase 5: Report Generation
|
|
156
|
+
|
|
157
|
+
Generate a report following `examples/sample-report.md` structure.
|
|
158
|
+
|
|
159
|
+
For each failed criterion, cite the relevant example:
|
|
160
|
+
```
|
|
161
|
+
❌ No role statement ("You are...") found
|
|
162
|
+
→ See examples/bad-agent.md (line 10) vs examples/good-agent.md (line 8)
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Prioritize findings:
|
|
166
|
+
- 🔴 **Critical** (fix immediately): Security issues OR grade F
|
|
167
|
+
- 🟡 **Important** (fix soon): Grade D–C OR missing key structural elements
|
|
168
|
+
- 🔵 **Minor** (polish): Grade B OR optional improvements
|
|
169
|
+
|
|
170
|
+
## Quick Wins (High-Impact, Low-Effort Fixes)
|
|
171
|
+
|
|
172
|
+
| Issue | Score Impact | Fix Effort |
|
|
173
|
+
|-------|-------------|------------|
|
|
174
|
+
| Missing `model:` in agent | +3 pts | 1 line |
|
|
175
|
+
| No `allowed-tools` in standard skill | +3 pts | 1 line |
|
|
176
|
+
|
|
177
|
+
| No "When to use" trigger section | +2–3 pts | 1 paragraph |
|
|
178
|
+
| Hardcoded `/Users/` path | +1 pt + removes security risk | Find + replace |
|
|
179
|
+
| No `argument-hint` for command with args | +3 pts | 1 line |
|
|
180
|
+
| Missing "You are…" role statement in agent | +2 pts | 1 sentence |
|
|
181
|
+
| No output format section | +2 pts | 1 short section |
|
|
182
|
+
| Description uses second person ("Use this...") | +1–2 pts | Rephrase |
|
|
183
|
+
| CLAUDE.md >400 non-code words | +2 pts + reduces instruction loss | Prune noise |
|
|
184
|
+
| `CLAUDE.local.md` not in `.gitignore` | removes security risk | 1 line in .gitignore |
|
|
185
|
+
| Pattern A: guides exist but not referenced by path | +2 pts | Add guide paths to CLAUDE.md |
|
|
186
|
+
| Pattern B: subdir CLAUDE.md duplicates root | +2 pts | Remove duplication, scope to module only |
|
|
187
|
+
|
|
188
|
+
## Reference Files
|
|
189
|
+
|
|
190
|
+
### Scoring Details
|
|
191
|
+
- **`references/component-checklists.md`** — Full rubric: all criteria, point values, detection patterns
|
|
192
|
+
- **`references/best-practices.md`** — Rationale per criterion, anti-patterns to avoid, quick-fix examples
|
|
193
|
+
|
|
194
|
+
### Examples
|
|
195
|
+
|
|
196
|
+
| Component | Good Example | Bad Example |
|
|
197
|
+
|-----------|-------------|-------------|
|
|
198
|
+
| Skill | `examples/good-skill.md` | `examples/bad-skill.md` |
|
|
199
|
+
| Agent | `examples/good-agent.md` | `examples/bad-agent.md` |
|
|
200
|
+
| CLAUDE.md | `examples/good-claude-md-snippet.md` | `examples/bad-claude-md-snippet.md` |
|
|
201
|
+
| Command | `examples/good-command.md` | `examples/bad-command.md` |
|
|
202
|
+
| Hooks config | `examples/good-hooks.json` | `examples/bad-hooks.json` |
|
|
203
|
+
| Full report | `examples/sample-report.md` | — |
|
|
204
|
+
|
|
205
|
+
### Utilities
|
|
206
|
+
- **`scripts/scan-repo.sh`** — Discover and inventory all Claude Code components
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
# ❌ BAD AGENT EXAMPLE
|
|
3
|
+
# Score: ~7/32 pts (Grade F)
|
|
4
|
+
# What's wrong: See inline comments marked ❌
|
|
5
|
+
#
|
|
6
|
+
# ❌ A1.1: Generic name "reviewer" — not descriptive
|
|
7
|
+
# ❌ A1.2: Description has no trigger context, wrong person
|
|
8
|
+
# ❌ A1.3: No model specified
|
|
9
|
+
# ❌ A1.4: Bash in tools with no justification; overly broad tool set
|
|
10
|
+
# ❌ A2.1: No "You are..." role statement
|
|
11
|
+
# ❌ A2.2: No output format defined
|
|
12
|
+
# ❌ A2.3: No scope, no "When NOT to use"
|
|
13
|
+
# ❌ A2.4: No anti-hallucination measures
|
|
14
|
+
# ❌ A3.1: No examples
|
|
15
|
+
# ❌ A3.2: No edge cases
|
|
16
|
+
# ❌ A3.3: No error handling
|
|
17
|
+
# ❌ A4.1: Multi-purpose (code + architecture + docs + CI/CD + DB)
|
|
18
|
+
# ❌ A4.3: No skill references
|
|
19
|
+
---
|
|
20
|
+
name: reviewer
|
|
21
|
+
description: Use this agent to review things and provide feedback on code
|
|
22
|
+
and other project artifacts.
|
|
23
|
+
tools: [Read, Grep, Glob, Bash, Write, WebFetch, WebSearch]
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Code Review Agent
|
|
28
|
+
|
|
29
|
+
This agent will review your code and tell you if there are any issues. It can
|
|
30
|
+
handle many different types of reviews and will help you improve your code
|
|
31
|
+
quality across all aspects of your project.
|
|
32
|
+
|
|
33
|
+
Review the code and provide feedback:
|
|
34
|
+
- Check for bugs
|
|
35
|
+
- Check for security issues
|
|
36
|
+
- Check for style issues
|
|
37
|
+
- Check for performance issues
|
|
38
|
+
- Check for test coverage
|
|
39
|
+
- Review architecture decisions
|
|
40
|
+
- Suggest improvements to documentation
|
|
41
|
+
- Help with CI/CD configuration
|
|
42
|
+
- Review database schemas
|
|
43
|
+
- Check API design
|
|
44
|
+
|
|
45
|
+
Provide thorough feedback on everything you find. Be comprehensive.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# ❌ BAD CLAUDE.md SNIPPET EXAMPLE
|
|
2
|
+
# Score: ~6/30 pts (Grade F)
|
|
3
|
+
#
|
|
4
|
+
# ❌ R1.1: No coding standards defined
|
|
5
|
+
# ❌ R1.2: Workflow policies are vague ("try to follow")
|
|
6
|
+
# ❌ R1.3: No MANDATORY/NEVER/ALWAYS directives
|
|
7
|
+
# ❌ R2.1: Not actionable — uses "try", "be careful", "consider"
|
|
8
|
+
# ❌ R2.2: No trigger conditions specified
|
|
9
|
+
# ❌ R2.3: No explicit prohibitions
|
|
10
|
+
# ❌ R3.1: Wall of text, no section organization
|
|
11
|
+
# ❌ R3.2: No quick-reference tables
|
|
12
|
+
# ❌ R3.3: No ✅/❌ examples
|
|
13
|
+
# ❌ R4.1: Contradictions — "always write tests" vs later "only write tests when asked"
|
|
14
|
+
# ❌ R4.2: No version requirements mentioned
|
|
15
|
+
# ❌ R4.3: No project context
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
This project uses TypeScript and Node.js. When working on it, try to follow
|
|
20
|
+
good coding practices and be careful with the code you write. Make sure to
|
|
21
|
+
use modern JavaScript features when possible.
|
|
22
|
+
|
|
23
|
+
For git operations, try to use descriptive commit messages and be careful
|
|
24
|
+
with what you commit. Remember to test your changes before committing and
|
|
25
|
+
try to follow the team's conventions.
|
|
26
|
+
|
|
27
|
+
Testing is important. Always write tests for your code to make sure everything
|
|
28
|
+
works. Make sure tests pass before finishing.
|
|
29
|
+
|
|
30
|
+
Only write tests when the user explicitly asks for them.
|
|
31
|
+
|
|
32
|
+
When using imports, be careful with the paths and make sure they work.
|
|
33
|
+
Consider using TypeScript properly.
|
|
34
|
+
|
|
35
|
+
For builds, run the build command when you're done. Be careful about
|
|
36
|
+
environment variables and make sure you're not leaking any sensitive
|
|
37
|
+
information. Try to follow security best practices in general.
|
|
38
|
+
|
|
39
|
+
If something isn't working, check the logs and try to figure out what's
|
|
40
|
+
wrong. Usually errors have helpful messages. Consider using the debugger.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
# ❌ BAD COMMAND EXAMPLE
|
|
3
|
+
# Score: ~4/20 pts (Grade F)
|
|
4
|
+
#
|
|
5
|
+
# ❌ C1.1: Frontmatter missing description field
|
|
6
|
+
# ❌ C1.2: Uses $ARGUMENTS in body but no argument-hint in frontmatter
|
|
7
|
+
# ❌ C1.3: No phases or structured workflow — just a list of bullets
|
|
8
|
+
# ❌ C1.4: No usage examples section
|
|
9
|
+
# ❌ C2.1: No error handling for failures
|
|
10
|
+
# ❌ C2.2: No output format defined
|
|
11
|
+
# ❌ C2.3: No validation gates or confirmation step
|
|
12
|
+
# ❌ C2.4: $ARGUMENTS used but no parsing logic shown
|
|
13
|
+
name: jira
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Jira Ticket Creator
|
|
17
|
+
|
|
18
|
+
Create a jira ticket using this command. Just describe what you want and
|
|
19
|
+
the ticket will be created in Jira.
|
|
20
|
+
|
|
21
|
+
The command will figure out the type and priority automatically based on
|
|
22
|
+
what you write.
|
|
23
|
+
|
|
24
|
+
Make sure JIRA_TOKEN is set before using this.
|
|
25
|
+
|
|
26
|
+
Steps:
|
|
27
|
+
- Figure out what kind of ticket $ARGUMENTS is asking for
|
|
28
|
+
- Write a description
|
|
29
|
+
- Create the ticket
|
|
30
|
+
- Tell the user the ticket ID
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "❌ BAD HOOKS EXAMPLE — Score: ~3/20 pts (Grade F)",
|
|
3
|
+
"_notes": {
|
|
4
|
+
"H1.1": "✅ Valid JSON (only thing that passes)",
|
|
5
|
+
"H1.2": "❌ 'PreToolCall' is not a valid event type — should be 'PreToolUse'",
|
|
6
|
+
"H2.1": "❌ Hardcoded API key 'sk-abc123def456' in command string",
|
|
7
|
+
"H2.2": "❌ No set -e or trap — script will silently fail",
|
|
8
|
+
"H3.1": "❌ Matcher '.*' matches ALL tool uses — runs on every single action",
|
|
9
|
+
"H3.2": "❌ No description field — no way to know what this hook is for"
|
|
10
|
+
},
|
|
11
|
+
"hooks": [
|
|
12
|
+
{
|
|
13
|
+
"event": "PreToolCall",
|
|
14
|
+
"matcher": ".*",
|
|
15
|
+
"hooks": [
|
|
16
|
+
{
|
|
17
|
+
"type": "command",
|
|
18
|
+
"command": "bash -c 'curl https://api.mycompany.com/audit -d \"tool=$CLAUDE_TOOL_NAME&session=$CLAUDE_SESSION_ID\" -H \"Authorization: Bearer sk-abc123def456\" -H \"Content-Type: application/json\"'"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
# ❌ BAD SKILL EXAMPLE
|
|
3
|
+
# Score: ~8/32 pts (Grade F)
|
|
4
|
+
# What's wrong: See inline comments marked ❌
|
|
5
|
+
#
|
|
6
|
+
# ❌ S1.2: Name "Git Helper" has uppercase and space (should be git-helper)
|
|
7
|
+
# ❌ S1.3: Description uses second person ("Use this skill"), vague, no trigger phrases
|
|
8
|
+
# ❌ S1.4: No allowed-tools field — no tool restriction
|
|
9
|
+
# ❌ S2.1: No methodology or structured workflow
|
|
10
|
+
# ❌ S2.2: No output format defined
|
|
11
|
+
# ❌ S2.3: No concrete examples
|
|
12
|
+
# ❌ S2.4: No actionable checklists
|
|
13
|
+
# ❌ S3.1: Hardcoded absolute path /Users/developer/projects
|
|
14
|
+
# ❌ S4.1: Multi-purpose (commits AND branches AND rebasing AND PRs)
|
|
15
|
+
# ❌ S4.2: No "When to use" or trigger conditions
|
|
16
|
+
# ❌ Writing style: second person throughout ("you can", "you should")
|
|
17
|
+
---
|
|
18
|
+
name: Git Helper
|
|
19
|
+
description: Use this skill when you need to do git things like commits and
|
|
20
|
+
pushing code and other git operations.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Git Helper Skill
|
|
25
|
+
|
|
26
|
+
This skill helps you with git. You can use it for commits, pushes, branches,
|
|
27
|
+
and various git operations when working on your projects.
|
|
28
|
+
|
|
29
|
+
When you need to do git things, this skill will help you do them correctly.
|
|
30
|
+
It works with any git repository on your machine.
|
|
31
|
+
|
|
32
|
+
Instructions:
|
|
33
|
+
- Do git status first to see what files you have
|
|
34
|
+
- Then you should stage the files you want to commit
|
|
35
|
+
- Try to write a good commit message
|
|
36
|
+
- Be careful with the commit message format
|
|
37
|
+
- You should also check what files are staged
|
|
38
|
+
- Make sure everything looks good before committing
|
|
39
|
+
- Don't forget to push when you're done
|
|
40
|
+
|
|
41
|
+
For branches: you can create new branches when needed. Try to use descriptive
|
|
42
|
+
names. You should merge or rebase depending on the situation.
|
|
43
|
+
|
|
44
|
+
Working directory note: this skill assumes you're working in
|
|
45
|
+
/Users/developer/projects as the base path for all repositories.
|
|
46
|
+
|
|
47
|
+
Note: This skill also handles pull requests, rebasing, cherry-picking,
|
|
48
|
+
stash management, and GitHub integration.
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
# ✅ GOOD AGENT EXAMPLE
|
|
3
|
+
# Score: ~30/32 pts (Grade A)
|
|
4
|
+
# What makes it good: See inline comments marked ✅
|
|
5
|
+
#
|
|
6
|
+
# ✅ A1.1: Descriptive, domain-specific name
|
|
7
|
+
# ✅ A1.2: Description has "when" and "use" trigger context
|
|
8
|
+
# ✅ A1.3: Model explicitly specified
|
|
9
|
+
# ✅ A1.4: Bash justified with inline comment
|
|
10
|
+
# ✅ A2.1: "You are..." role statement
|
|
11
|
+
# ✅ A2.2: Output format section defined
|
|
12
|
+
# ✅ A2.3: Scope + "When NOT to use"
|
|
13
|
+
# ✅ A2.4: Anti-hallucination section
|
|
14
|
+
# ✅ A3.1: 3+ usage examples
|
|
15
|
+
# ✅ A3.2: Edge cases documented
|
|
16
|
+
# ✅ A3.3: Error handling described
|
|
17
|
+
# ✅ A4.1: Single responsibility (code review only)
|
|
18
|
+
# ✅ A4.3: References related skills/agents
|
|
19
|
+
#
|
|
20
|
+
# ⚠️ Minor gap: A3.4 — integration docs could be more explicit
|
|
21
|
+
---
|
|
22
|
+
name: code-reviewer
|
|
23
|
+
description: This agent should be used when the user asks to "review my code",
|
|
24
|
+
"check code quality", "review this PR", "look for bugs", "security review",
|
|
25
|
+
or "give feedback on my implementation". Reviews staged or committed changes
|
|
26
|
+
for quality, security, and correctness issues.
|
|
27
|
+
model: claude-sonnet-4-6
|
|
28
|
+
tools: [Read, Grep, Glob, Bash]
|
|
29
|
+
# Bash required for: git diff, git log, running lint checks
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
# Code Reviewer Agent
|
|
34
|
+
|
|
35
|
+
Reviews code changes for quality, security, and correctness. Provides structured
|
|
36
|
+
feedback with severity levels and concrete improvement suggestions.
|
|
37
|
+
|
|
38
|
+
## Role
|
|
39
|
+
|
|
40
|
+
You are a senior code reviewer with expertise in security vulnerabilities,
|
|
41
|
+
performance patterns, and maintainability. Your job is to identify real issues
|
|
42
|
+
that would cause problems in production — not stylistic preferences or micro-
|
|
43
|
+
optimizations. Focus on bugs, security vulnerabilities, logic errors, and
|
|
44
|
+
maintainability problems.
|
|
45
|
+
|
|
46
|
+
## Scope
|
|
47
|
+
|
|
48
|
+
**Review**: Staged changes (`git diff --cached`), committed changes (`git diff HEAD~1`),
|
|
49
|
+
or specific files provided by the user.
|
|
50
|
+
|
|
51
|
+
**Do NOT review**: Generated files, `node_modules/`, `dist/`, `*.lock` files,
|
|
52
|
+
binary files.
|
|
53
|
+
|
|
54
|
+
**When NOT to use this agent**:
|
|
55
|
+
- Architecture decisions → use `solution-architect` agent
|
|
56
|
+
- Writing tests → use `test-writer` agent
|
|
57
|
+
- Performance profiling → run profiler first, then use this agent on hotspots
|
|
58
|
+
|
|
59
|
+
## Methodology
|
|
60
|
+
|
|
61
|
+
1. Identify changed files: `git diff --name-only` or user-provided files
|
|
62
|
+
2. For each file: read with context (surrounding code, not just diff)
|
|
63
|
+
3. Evaluate against criteria below
|
|
64
|
+
4. Generate structured report
|
|
65
|
+
|
|
66
|
+
### Review Criteria
|
|
67
|
+
|
|
68
|
+
**Security** (Critical — block production):
|
|
69
|
+
- SQL injection, XSS, command injection vectors
|
|
70
|
+
- Hardcoded credentials or secrets in code
|
|
71
|
+
- Unvalidated input at system boundaries (user input, API responses, file reads)
|
|
72
|
+
- Overly permissive CORS, auth bypass patterns
|
|
73
|
+
|
|
74
|
+
**Correctness** (High — likely causes bugs):
|
|
75
|
+
- Off-by-one errors, logic inversions
|
|
76
|
+
- Unhandled exceptions or null/undefined dereferences
|
|
77
|
+
- Race conditions in async code
|
|
78
|
+
- Incorrect error propagation (swallowing errors)
|
|
79
|
+
|
|
80
|
+
**Performance** (Medium — degrades at scale):
|
|
81
|
+
- N+1 query patterns
|
|
82
|
+
- Synchronous I/O in async contexts
|
|
83
|
+
- Unbounded loops or missing pagination
|
|
84
|
+
|
|
85
|
+
**Maintainability** (Low — increases tech debt):
|
|
86
|
+
- Functions >40 lines without clear justification
|
|
87
|
+
- Missing error context in catch blocks
|
|
88
|
+
- Unclear naming in non-trivial logic
|
|
89
|
+
|
|
90
|
+
## Output Format
|
|
91
|
+
|
|
92
|
+
```markdown
|
|
93
|
+
## Code Review: [file or PR title]
|
|
94
|
+
|
|
95
|
+
**Summary**: [1–2 sentence overall assessment]
|
|
96
|
+
**Verdict**: APPROVE / REQUEST CHANGES / BLOCKING
|
|
97
|
+
|
|
98
|
+
### 🔴 Critical (must fix before merge)
|
|
99
|
+
- **[File:Line]** [Issue]
|
|
100
|
+
- Impact: [what goes wrong in production]
|
|
101
|
+
- Fix: [concrete actionable suggestion]
|
|
102
|
+
|
|
103
|
+
### 🟡 Important (should fix)
|
|
104
|
+
- **[File:Line]** [Issue]
|
|
105
|
+
- Fix: [suggestion]
|
|
106
|
+
|
|
107
|
+
### 🔵 Minor (optional polish)
|
|
108
|
+
...
|
|
109
|
+
|
|
110
|
+
### ✅ Positives
|
|
111
|
+
[2–3 specific things done well — required, not optional]
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Source Verification
|
|
115
|
+
|
|
116
|
+
- Base all feedback on actual code seen in the diff — never assume patterns not shown
|
|
117
|
+
- If uncertain whether something is a bug: "This may cause issues if [condition]…"
|
|
118
|
+
- Never invent API signatures, library behaviors, or version requirements
|
|
119
|
+
- Do not cite performance numbers without measurement evidence
|
|
120
|
+
|
|
121
|
+
## Examples
|
|
122
|
+
|
|
123
|
+
1. "Review my changes before commit" → run `git diff --cached`, review staged changes
|
|
124
|
+
2. "Review the auth PR" → run `git diff main...HEAD`, review branch changes
|
|
125
|
+
3. "Check this file for security issues" → review specified file for security criteria only
|
|
126
|
+
4. "Quick review" → focus on Critical and High issues only, skip Low
|
|
127
|
+
|
|
128
|
+
## Edge Cases
|
|
129
|
+
|
|
130
|
+
- **Empty diff**: Warn "No staged/changed files found" and exit
|
|
131
|
+
- **Binary files**: Skip with note "Binary file skipped (not reviewable)"
|
|
132
|
+
- **Very large diffs (>200 files)**: Ask user to scope to specific directories
|
|
133
|
+
- **Generated code** (e.g., `*.generated.ts`): Skip automatically
|
|
134
|
+
|
|
135
|
+
## Error Handling
|
|
136
|
+
|
|
137
|
+
- If `git` is not available: switch to direct file analysis
|
|
138
|
+
- If file cannot be read: note in report and continue with other files
|
|
139
|
+
- If user provides invalid path: report "File not found: [path]"
|
|
140
|
+
|
|
141
|
+
## Works With
|
|
142
|
+
|
|
143
|
+
- After review: use `commit-helper` skill for conventional commit message
|
|
144
|
+
- For test gaps found: mention `test-writer` agent for coverage
|
|
145
|
+
- For architecture concerns: escalate to `solution-architect` agent
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# ✅ GOOD CLAUDE.md SNIPPET EXAMPLE
|
|
2
|
+
# Score: ~27/30 pts (Grade A)
|
|
3
|
+
#
|
|
4
|
+
# ✅ R1.1: Coding standards defined (TypeScript section)
|
|
5
|
+
# ✅ R1.2: Workflow policies explicit (Git, Testing)
|
|
6
|
+
# ✅ R1.3: Critical rules with MANDATORY/NEVER + triggers
|
|
7
|
+
# ✅ R2.1: Actionable — starts with verbs (Use, Run, Add, Never)
|
|
8
|
+
# ✅ R2.2: Trigger conditions stated ("when user says", "for TypeScript files")
|
|
9
|
+
# ✅ R2.3: Explicit prohibitions with examples
|
|
10
|
+
# ✅ R3.1: Organized H2 sections
|
|
11
|
+
# ✅ R3.2: Quick-reference table
|
|
12
|
+
# ✅ R3.3: ✅/❌ pattern examples
|
|
13
|
+
# ✅ R4.2: Technology versions mentioned
|
|
14
|
+
# ✅ R4.3: Project context stated
|
|
15
|
+
#
|
|
16
|
+
# ⚠️ Minor gap: R4.1 — one minor contradiction possible (needs manual check)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
# CLAUDE.md — Acme API Service
|
|
20
|
+
|
|
21
|
+
**Project**: REST API backend for Acme platform (Node.js 22, TypeScript 5.4)
|
|
22
|
+
**Team**: Platform Engineering
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## ⚡ Task Classifier (Scan First)
|
|
27
|
+
|
|
28
|
+
| Keywords in request | Apply policy |
|
|
29
|
+
|--------------------|-------------|
|
|
30
|
+
| "commit", "push", "branch", "PR" | → Git Policy below |
|
|
31
|
+
| "test", "spec", "vitest" | → Testing Policy below |
|
|
32
|
+
| TypeScript, imports, types | → TypeScript Standards below |
|
|
33
|
+
| "deploy", "release", "build" | → Build Policy below |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 🚨 Critical Rules (MANDATORY)
|
|
38
|
+
|
|
39
|
+
🚨 **NEVER commit to `main` directly.** Always use feature branches.
|
|
40
|
+
|
|
41
|
+
🚨 **NEVER use `--no-verify` on git hooks.** If a hook fails, fix the underlying issue first.
|
|
42
|
+
|
|
43
|
+
🚨 **NEVER write tests unless user explicitly asks.** Wait for "write tests", "add coverage", "create specs".
|
|
44
|
+
|
|
45
|
+
🚨 **ALWAYS use `.js` extensions in TypeScript imports.** TypeScript compiles to ESM. Missing extension = runtime crash.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## TypeScript Standards
|
|
50
|
+
|
|
51
|
+
**Imports** — ES modules only:
|
|
52
|
+
```typescript
|
|
53
|
+
✅ import { foo } from './utils.js'
|
|
54
|
+
✅ import type { Bar } from './types.js'
|
|
55
|
+
❌ import { foo } from './utils' // missing .js extension
|
|
56
|
+
❌ const { foo } = require('./utils') // CommonJS not allowed
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Types** — strict mode, no `any` shortcuts:
|
|
60
|
+
```typescript
|
|
61
|
+
✅ function process(input: unknown): Result { ... }
|
|
62
|
+
✅ const value = data as UserProfile // explicit assertion
|
|
63
|
+
❌ function process(input: any) { ... } // defeats type safety
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Async patterns**:
|
|
67
|
+
```typescript
|
|
68
|
+
✅ const result = await Promise.all([a(), b()]) // parallel where possible
|
|
69
|
+
❌ const r1 = await a() // sequential bottleneck
|
|
70
|
+
❌ const r2 = await b()
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Git Policy
|
|
76
|
+
|
|
77
|
+
**Branch naming**: `<type>/<description>` — e.g., `feat/add-oauth`, `fix/token-refresh`
|
|
78
|
+
|
|
79
|
+
**Commit format**: Conventional Commits:
|
|
80
|
+
```
|
|
81
|
+
feat(auth): add token refresh on 401 response
|
|
82
|
+
fix(api): handle null user in profile endpoint
|
|
83
|
+
chore: update eslint to v9
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**PR requirements**:
|
|
87
|
+
- [ ] Branch is up to date with `main`
|
|
88
|
+
- [ ] All CI checks pass
|
|
89
|
+
- [ ] No `console.log` or debug code
|
|
90
|
+
|
|
91
|
+
**Never do**:
|
|
92
|
+
- ❌ `git push --force` to `main` (destructive, permanently loses history)
|
|
93
|
+
- ❌ `git commit --amend` on published commits (breaks teammates' history)
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Testing Policy
|
|
98
|
+
|
|
99
|
+
**MANDATORY**: Write tests ONLY when user explicitly says "write tests", "add coverage", "create unit tests".
|
|
100
|
+
|
|
101
|
+
**Never proactively write or suggest tests.**
|
|
102
|
+
|
|
103
|
+
Test commands:
|
|
104
|
+
```bash
|
|
105
|
+
npm test # all tests
|
|
106
|
+
npm run test:unit # unit only
|
|
107
|
+
npm run test:coverage # with coverage report
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Framework: Vitest 4.x. All tests use dynamic imports for mocking (not static).
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Build Policy
|
|
115
|
+
|
|
116
|
+
**Node.js**: >= 22.0.0 required (`node --version`)
|
|
117
|
+
**npm**: bundled with Node — no yarn or pnpm
|
|
118
|
+
**Build output**: `dist/` (gitignored)
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
npm run build # TypeScript → dist/
|
|
122
|
+
npm run lint # ESLint (zero warnings required)
|
|
123
|
+
npm run ci # Full pipeline: lint + build + test
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Before deploying**: All CI checks must pass. No bypassing.
|