@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,413 @@
|
|
|
1
|
+
# Component Scoring Checklists
|
|
2
|
+
|
|
3
|
+
Full scoring rubrics for all Claude Code components. Use during Phase 2 of the assessment.
|
|
4
|
+
|
|
5
|
+
**Scoring logic per criterion:**
|
|
6
|
+
- ✅ Pass → full points
|
|
7
|
+
- ⚠️ Partial → half points (present but incomplete/weak — round down)
|
|
8
|
+
- ❌ Fail → 0 points
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Skill Type Classification
|
|
13
|
+
|
|
14
|
+
Run this check **before** applying any scoring rubric to a skill file.
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
grep -i "codemie.*assistant\|codemie.*chat\|assistants chat" SKILL.md
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
| Result | Skill Type | Rubric to Apply |
|
|
21
|
+
|--------|-----------|----------------|
|
|
22
|
+
| Match found | **Codemie-delegating** — thin API wrapper that routes to a Codemie assistant backend | Reduced rubric (21 pts max, see below) |
|
|
23
|
+
| No match | **Standard skill** — executes locally via Claude tool calls | Full rubric (32 pts max) |
|
|
24
|
+
|
|
25
|
+
### Codemie-Delegating Skill: Exemptions Table
|
|
26
|
+
|
|
27
|
+
These criteria are **N/A** (skip, do not score, do not penalise):
|
|
28
|
+
|
|
29
|
+
| Criterion | Why exempted |
|
|
30
|
+
|-----------|-------------|
|
|
31
|
+
| S1.4 `allowed-tools` | No local tool execution — the assistant handles it |
|
|
32
|
+
| S2.1 Methodology/workflow | No local workflow steps — delegation is the entire "workflow" |
|
|
33
|
+
| S2.2 Output format | Output is determined by the backend assistant |
|
|
34
|
+
| S2.3 Examples | Usage pattern differs from standard skills; not applicable |
|
|
35
|
+
| S2.4 Checklists | No step-by-step process to check off |
|
|
36
|
+
|
|
37
|
+
**Applicable criteria for codemie-delegating skills** (21 pts max):
|
|
38
|
+
- S1.1 (3), S1.2 (3), S1.3 (3) — identity always matters
|
|
39
|
+
- S3.1 (1), S3.2 (1, **includes UUID check — see below**), S3.3 (1), S3.4 (1) — technical hygiene
|
|
40
|
+
- S4.1 (2), S4.2 (2), S4.3 (2), S4.4 (2) — design quality
|
|
41
|
+
|
|
42
|
+
**Scoring formula for codemie-delegating skills**:
|
|
43
|
+
```
|
|
44
|
+
Score = (points obtained from applicable criteria / 21) × 100
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Skills (32 points max)
|
|
50
|
+
|
|
51
|
+
### Structure (weight 3×) — 12 points
|
|
52
|
+
|
|
53
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
54
|
+
|----|-----------|-----|-----------|----------------|
|
|
55
|
+
| S1.1 | Valid SKILL.md filename or frontmatter | 3 | Filename == `SKILL.md` OR YAML frontmatter with `name:` field | File correctly identified as skill |
|
|
56
|
+
| S1.2 | Name follows convention | 3 | Frontmatter `name:` matches `^[a-z0-9-]{1,64}$` | Lowercase, hyphens only, 1–64 chars |
|
|
57
|
+
| S1.3 | Description non-empty | 3 | `description` field exists and length >20 chars | Not empty, not placeholder text |
|
|
58
|
+
| S1.4 | `allowed-tools` specified | 3 | Frontmatter has `allowed-tools:` field | List or `all` value present |
|
|
59
|
+
|
|
60
|
+
**Partial credit (⚠️)**:
|
|
61
|
+
- S1.2: Name exists but uses underscores or has uppercase → 1.5 pts
|
|
62
|
+
- S1.3: Description exists but <20 chars or is generic ("A skill for…") → 1.5 pts
|
|
63
|
+
- S1.4: `allowed-tools` present but empty list `[]` → 1.5 pts
|
|
64
|
+
|
|
65
|
+
### Content (weight 2×) — 8 points
|
|
66
|
+
|
|
67
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
68
|
+
|----|-----------|-----|-----------|----------------|
|
|
69
|
+
| S2.1 | Methodology or workflow described | 2 | Section titled `Methodology`, `Workflow`, `Process`, or numbered steps present | Structured process documented |
|
|
70
|
+
| S2.2 | Output format specified | 2 | Section `Output`, `Format`, `Deliverables`, or explicit output type mentioned | Output shape defined |
|
|
71
|
+
| S2.3 | Examples provided | 2 | Section `Examples`, `Usage`, `Scenarios` with code blocks or concrete instances | ≥1 concrete example |
|
|
72
|
+
| S2.4 | Actionable checklists | 2 | Markdown checkboxes `- [ ]` or `- [x]` present | ≥3 checklist items |
|
|
73
|
+
|
|
74
|
+
**Partial credit (⚠️)**:
|
|
75
|
+
- S2.1: Steps exist but not organized (bullet list without numbering) → 1 pt
|
|
76
|
+
- S2.3: Examples section exists but examples are abstract/vague → 1 pt
|
|
77
|
+
- S2.4: Checkboxes present but <3 items → 1 pt
|
|
78
|
+
|
|
79
|
+
### Technical (weight 1×) — 4 points
|
|
80
|
+
|
|
81
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
82
|
+
|----|-----------|-----|-----------|----------------|
|
|
83
|
+
| S3.1 | No hardcoded absolute paths | 1 | Grep for `/Users/`, `/home/[a-z]`, `C:\`, `D:\` | None found in SKILL.md or bundled scripts |
|
|
84
|
+
| S3.2 | No plaintext secrets | 1 | Grep for `password\s*=`, `api_key\s*=`, `token\s*=` with literal values | None found (comments about avoiding secrets OK) |
|
|
85
|
+
| S3.3 | Script error handling | 1 | If `.sh`/`.bash` files exist: grep for `set -e`, `trap`, `\|\| exit` | All scripts have error handling, or no scripts |
|
|
86
|
+
| S3.4 | Dependencies documented | 1 | If external tools required: section `Requirements`, `Dependencies`, or `Prerequisites` | Prerequisites stated or no external deps |
|
|
87
|
+
|
|
88
|
+
### Design (weight 2×) — 8 points
|
|
89
|
+
|
|
90
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
91
|
+
|----|-----------|-----|-----------|----------------|
|
|
92
|
+
| S4.1 | Single responsibility | 2 | Token count <5000 AND description avoids: `general`, `multi-purpose`, `various` | One focused domain |
|
|
93
|
+
| S4.2 | Clear trigger conditions | 2 | Content has `When to use`, `Triggers`, `Activation`, or `Use cases` | User knows when to invoke |
|
|
94
|
+
| S4.3 | No significant overlap | 2 | Jaccard similarity with other skills <0.5 | <50% keyword overlap with siblings |
|
|
95
|
+
| S4.4 | Token budget respected | 2 | Total file size estimate (words × 1.3) <8000 tokens | Does not bloat context |
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Agents / Subagents (32 points max)
|
|
100
|
+
|
|
101
|
+
### Identity (weight 3×) — 12 points
|
|
102
|
+
|
|
103
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
104
|
+
|----|-----------|-----|-----------|----------------|
|
|
105
|
+
| A1.1 | Descriptive name | 3 | `name:` not matching: `agent\d+`, `test`, `example`, `helper`, `assistant` | Meaningful, domain-specific name |
|
|
106
|
+
| A1.2 | Description with trigger context | 3 | Description uses third-person ("This agent should be invoked when…") with `when`/`trigger` keywords; includes negative cases | User knows when AND when NOT to invoke |
|
|
107
|
+
| A1.3 | Model specified | 3 | Frontmatter `model:` field is present with a value — `inherit`, `sonnet`, `opus`, `haiku` all count | Model explicitly declared (even `inherit` is valid) |
|
|
108
|
+
| A1.4 | Tools appropriately restricted | 3 | All powerful/non-obvious tools justified: Bash AND any of Write/Edit/WebFetch/WebSearch need inline `# <tool> required for: <reason>` comment within 3 lines of `tools:` line | Least-privilege; intent clear |
|
|
109
|
+
|
|
110
|
+
**Partial credit (⚠️)**:
|
|
111
|
+
- A1.1: Name is generic but somewhat descriptive (e.g., "reviewer") → 1.5 pts
|
|
112
|
+
- A1.2: Uses "Use this agent when the user…" (object-directed) with trigger phrases → 1.5 pts; uses "Use this agent when you…" (user-directed second person) with triggers → 1 pt
|
|
113
|
+
- A1.4: Bash/powerful tools present with partial/non-proximate justification OR ≤3 tools total (minimal set) → 1.5 pts
|
|
114
|
+
|
|
115
|
+
**A1.3 note**: `model: inherit` means the agent deliberately uses the calling context's model. This is an intentional architectural decision — score as full pass. Only penalise when `model:` field is entirely absent.
|
|
116
|
+
|
|
117
|
+
### Prompt Quality (weight 2×) — 8 points
|
|
118
|
+
|
|
119
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
120
|
+
|----|-----------|-----|-----------|----------------|
|
|
121
|
+
| A2.1 | Role statement defined | 2 | First paragraph of body starts with `You are` OR contains `You are a/an [role]` within first 5 lines | Agent has clear, explicit persona at the top |
|
|
122
|
+
| A2.2 | Output format specified | 2 | Section `Output`, `Format`, `Deliverables`, or inline `## Output Format` / `### Structure` present | Output structure defined |
|
|
123
|
+
| A2.3 | Scope and limits defined | 2 | Section/content: `Scope`, `Limits`, `When NOT to use`, `What to AVOID`, `Do NOT`, `Triggers` | Boundaries explicit |
|
|
124
|
+
| A2.4 | Anti-hallucination measures | 2 | Any of: `verify`, `cite`, `source`, `evidence`, `don't invent`, `hallucination`, `when uncertain`, `only use verified`, `based on`, `read.*first`, `check.*guide`, `FIRST STEP.*read` | Accuracy guardrails present |
|
|
125
|
+
|
|
126
|
+
**Partial credit (⚠️)**:
|
|
127
|
+
- A2.1: Role implied through purpose statement (`**Purpose**: You will…`) or `## Your Core Mission` with first-person instructions but no "You are…" opener → 1 pt
|
|
128
|
+
- A2.3: Scope mentioned briefly but no negative cases defined → 1 pt
|
|
129
|
+
- A2.4: Some accuracy guidance but not explicit (e.g., "be accurate", "reference docs") → 1 pt
|
|
130
|
+
|
|
131
|
+
**A2.4 note**: Agents that instruct reading project guides before acting (`FIRST STEP: Read .codemie/guides/…`) provide implicit hallucination guardrails — count as partial pass (1 pt) if no explicit "when uncertain" language exists.
|
|
132
|
+
|
|
133
|
+
### Validation (weight 1×) — 4 points
|
|
134
|
+
|
|
135
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
136
|
+
|----|-----------|-----|-----------|----------------|
|
|
137
|
+
| A3.1 | 3+ usage examples | 1 | `Examples`, `Usage`, `Scenarios` section with ≥3 distinct entries | Sufficient usage coverage |
|
|
138
|
+
| A3.2 | Edge cases documented | 1 | Keywords: `edge case`, `corner case`, `error`, `failure`, `limitation` | Failure modes acknowledged |
|
|
139
|
+
| A3.3 | Error handling described | 1 | Keywords: `fallback`, `recovery`, `error handling`, `failure mode`, `graceful` | Recovery strategy present |
|
|
140
|
+
| A3.4 | Integration documented | 1 | References other agents, skills, or tools: `uses`, `integrates`, `works with`, `see also` | Ecosystem fit stated |
|
|
141
|
+
|
|
142
|
+
### Design (weight 2×) — 8 points
|
|
143
|
+
|
|
144
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
145
|
+
|----|-----------|-----|-----------|----------------|
|
|
146
|
+
| A4.1 | Single responsibility | 2 | Token count <5000 AND description avoids: `general`, `multi-purpose`, `various`, `all` | One focused domain |
|
|
147
|
+
| A4.2 | No duplication | 2 | Jaccard similarity with other agents <0.5 | <50% overlap with siblings |
|
|
148
|
+
| A4.3 | Composable | 2 | References skills, agents, or project guides: `skill:`, `invoke`, `delegate`, `uses`, `see also`, or direct path refs (`guides/`, `.codemie/`, `SKILL.md`) | Leverages ecosystem — agents, skills, or project knowledge base |
|
|
149
|
+
| A4.4 | Token budget | 2 | File size (words × 1.3) <8000 tokens | Context-efficient |
|
|
150
|
+
|
|
151
|
+
**A4.3 partial credit (⚠️)**: Agent references project guide files (`.codemie/guides/`, `CLAUDE.md`) for grounding but does not explicitly reference other agents or skills → 1 pt.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## CLAUDE.md Rules (36 points max)
|
|
156
|
+
|
|
157
|
+
### Coverage (weight 3×) — 9 points
|
|
158
|
+
|
|
159
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
160
|
+
|----|-----------|-----|-----------|----------------|
|
|
161
|
+
| R1.1 | Coding standards defined | 3 | Section on code style, language conventions, import patterns, or tooling | Style guidance present |
|
|
162
|
+
| R1.2 | Workflow policies stated | 3 | Git, testing, deployment, or PR policies explicitly documented | Process guidance present |
|
|
163
|
+
| R1.3 | Critical rules with triggers | 3 | Contains `MANDATORY`, `NEVER`, `ALWAYS`, `CRITICAL` with trigger conditions | Non-negotiables documented |
|
|
164
|
+
|
|
165
|
+
**Partial credit (⚠️)**:
|
|
166
|
+
- R1.1: Brief style mentions but no concrete rules → 1.5 pts
|
|
167
|
+
- R1.3: "Always/Never" keywords present but no trigger context → 1.5 pts
|
|
168
|
+
|
|
169
|
+
### Clarity (weight 3×) — 9 points
|
|
170
|
+
|
|
171
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
172
|
+
|----|-----------|-----|-----------|----------------|
|
|
173
|
+
| R2.1 | Actionable instructions | 3 | Instructions start with verbs; avoids vague words: `try`, `consider`, `be careful` | Commands are executable |
|
|
174
|
+
| R2.2 | Trigger conditions stated | 3 | Rules specify when they apply: `when user says`, `if file is`, `for TypeScript` | Context is unambiguous |
|
|
175
|
+
| R2.3 | Prohibitions explicit | 3 | `Never`, `Do not`, `Avoid` with concrete examples of what NOT to do | Forbidden actions are clear |
|
|
176
|
+
|
|
177
|
+
**Partial credit (⚠️)**:
|
|
178
|
+
- R2.1: Mix of actionable and vague instructions → 1.5 pts
|
|
179
|
+
- R2.3: General warnings but no concrete examples → 1.5 pts
|
|
180
|
+
|
|
181
|
+
### Structure (weight 2×) — 6 points
|
|
182
|
+
|
|
183
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
184
|
+
|----|-----------|-----|-----------|----------------|
|
|
185
|
+
| R3.1 | Section organization | 2 | ≥3 distinct H2 sections (not a wall of text) | Scannable and navigable |
|
|
186
|
+
| R3.2 | Quick-reference tables | 2 | ≥1 markdown table summarizing rules or commands | Fast lookup exists |
|
|
187
|
+
| R3.3 | Pattern examples | 2 | Shows ✅/❌ patterns or code blocks with correct vs incorrect | Good vs bad demonstrated |
|
|
188
|
+
|
|
189
|
+
### Maintenance (weight 1×) — 6 points
|
|
190
|
+
|
|
191
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
192
|
+
|----|-----------|-----|-----------|----------------|
|
|
193
|
+
| R4.1 | No contradictions | 2 | Rules don't conflict (manual review) | Consistent guidance |
|
|
194
|
+
| R4.2 | Technology versions noted | 2 | Stack versions mentioned: `Node >=20`, `Python 3.11+`, etc. | Version requirements clear |
|
|
195
|
+
| R4.3 | Project context present | 2 | Project name, purpose, or team context stated | Reader understands the project |
|
|
196
|
+
|
|
197
|
+
### Efficiency (weight 2×) — 6 points
|
|
198
|
+
|
|
199
|
+
**Before scoring R5.3, detect the knowledge organisation pattern:**
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
find . -name 'CLAUDE.md' | grep -v node_modules | wc -l # count
|
|
203
|
+
find . -type d \( -name 'guides' -o -name '.codemie' \) | grep -v node_modules # guide dirs
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
| Pattern | Detection | R5.3 scoring |
|
|
207
|
+
|---------|-----------|-------------|
|
|
208
|
+
| **A — Single CLAUDE.md + Guide Files** | 1 CLAUDE.md + guide/reference dirs present | Full credit if CLAUDE.md references guide paths |
|
|
209
|
+
| **B — Hierarchical CLAUDE.md** | Multiple CLAUDE.md at different dir depths | **N/A** — hierarchy IS the delegation; auto-pass R5.3 |
|
|
210
|
+
|
|
211
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
212
|
+
|----|-----------|-----|-----------|----------------|
|
|
213
|
+
| R5.1 | Concise body | 2 | Non-code-block word count ≤400 words per file | Short enough that all rules are noticed |
|
|
214
|
+
| R5.2 | No anti-pattern content | 2 | Does NOT contain: file-by-file descriptions, standard conventions Claude already knows, self-evident advice ("write clean code", "be careful") | Pruned of noise |
|
|
215
|
+
| R5.3 | Delegates detail appropriately | 2 | **Pattern A**: CLAUDE.md references guide files by path; **Pattern B**: N/A (auto-pass) | Detail offloaded via the chosen pattern |
|
|
216
|
+
|
|
217
|
+
**Partial credit (⚠️)**:
|
|
218
|
+
- R5.1: 400–700 words → 1 pt; >700 words → 0 (applies to every CLAUDE.md file regardless of pattern)
|
|
219
|
+
- R5.2: A few self-evident statements but critical rules still clear → 1 pt
|
|
220
|
+
- R5.3 (Pattern A only): Guide files exist but CLAUDE.md describes them vaguely without path refs → 1 pt
|
|
221
|
+
|
|
222
|
+
**R5.1 word count** (exclude code blocks):
|
|
223
|
+
```python
|
|
224
|
+
import re
|
|
225
|
+
def non_code_words(text: str) -> int:
|
|
226
|
+
no_code = re.sub(r'```.*?```', '', text, flags=re.DOTALL)
|
|
227
|
+
return len(no_code.split())
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**R5.2 anti-pattern detection**:
|
|
231
|
+
```bash
|
|
232
|
+
grep -n "\.md does\|\.ts does\|^- \`src/" CLAUDE.md # file-by-file descriptions
|
|
233
|
+
grep -ni "write clean\|be careful\|good code\|best practice" CLAUDE.md # self-evident advice
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## CLAUDE.md Knowledge Organisation Check
|
|
239
|
+
|
|
240
|
+
Apply this **after** per-file scoring. This is a **cross-component analysis** (Phase 3).
|
|
241
|
+
|
|
242
|
+
### Two Valid Patterns — Detect First
|
|
243
|
+
|
|
244
|
+
Both patterns are correct. Do NOT penalise a repo for not using the other pattern.
|
|
245
|
+
|
|
246
|
+
**Pattern A: Single CLAUDE.md + Guide Files**
|
|
247
|
+
One root CLAUDE.md acts as an index; domain knowledge lives in separate guide files that CLAUDE.md references by path.
|
|
248
|
+
```
|
|
249
|
+
./CLAUDE.md ← lean index, references guides by path
|
|
250
|
+
./.codemie/guides/architecture.md ← detail here
|
|
251
|
+
./.codemie/guides/testing.md
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
**Pattern B: Hierarchical CLAUDE.md**
|
|
255
|
+
Multiple CLAUDE.md files at different directory levels, each scoped to its context level.
|
|
256
|
+
```
|
|
257
|
+
./CLAUDE.md ← project-wide rules
|
|
258
|
+
./packages/api/CLAUDE.md ← api-specific context only
|
|
259
|
+
./packages/frontend/CLAUDE.md ← frontend-specific context only
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**Mixed pattern flag**: Having both subdir CLAUDE.md files AND a separate guides directory without clear ownership → 🔵 Minor inconsistency.
|
|
263
|
+
|
|
264
|
+
### Pattern A Checks
|
|
265
|
+
|
|
266
|
+
| Check | Severity | Detection |
|
|
267
|
+
|-------|----------|-----------|
|
|
268
|
+
| CLAUDE.md doesn't reference guide files by path | 🟡 Important | Guide dirs exist but no path refs to them in CLAUDE.md |
|
|
269
|
+
| `CLAUDE.local.md` not gitignored | 🔴 Critical | `grep CLAUDE.local.md .gitignore` → empty |
|
|
270
|
+
| Root not git-tracked | 🟡 Important | `git ls-files CLAUDE.md` → empty |
|
|
271
|
+
|
|
272
|
+
### Pattern B Checks
|
|
273
|
+
|
|
274
|
+
| Check | Severity | Detection |
|
|
275
|
+
|-------|----------|-----------|
|
|
276
|
+
| Root `CLAUDE.md` missing but subdir ones exist | 🟡 Important | No `./CLAUDE.md` but subdir files found |
|
|
277
|
+
| Subdir duplicates root content | 🟡 Important | Jaccard similarity >0.3 between subdir and root |
|
|
278
|
+
| Subdir contains project-wide rules | 🟡 Important | Subdir mentions stack/tooling that applies everywhere |
|
|
279
|
+
| `CLAUDE.local.md` not gitignored | 🔴 Critical | `grep CLAUDE.local.md .gitignore` → empty |
|
|
280
|
+
| Root not git-tracked | 🟡 Important | `git ls-files CLAUDE.md` → empty |
|
|
281
|
+
| Monorepo missing per-package CLAUDE.md | 🔵 Minor | `packages/*/` dirs exist but none have CLAUDE.md |
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Commands (20 points max)
|
|
286
|
+
|
|
287
|
+
### Structure (weight 3×) — 12 points
|
|
288
|
+
|
|
289
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
290
|
+
|----|-----------|-----|-----------|----------------|
|
|
291
|
+
| C1.1 | Valid frontmatter | 3 | YAML frontmatter with `name:` AND `description:` fields | Identity established |
|
|
292
|
+
| C1.2 | Argument hint present | 3 | If `$ARGUMENTS` in body: frontmatter has `argument-hint:` | Usage hints visible in slash-complete |
|
|
293
|
+
| C1.3 | Step-by-step workflow | 3 | Numbered phases (Phase 1…, 1., 2.) or clear H2 sections | Structured process |
|
|
294
|
+
| C1.4 | Usage examples | 3 | Section `Usage`, `Examples` with invocation patterns | Invocation shown |
|
|
295
|
+
|
|
296
|
+
**Partial credit (⚠️)**:
|
|
297
|
+
- C1.2: Hint present but vague (e.g., `"[args]"`) → 1.5 pts
|
|
298
|
+
- C1.3: Some structure but missing step numbers/phases → 1.5 pts
|
|
299
|
+
|
|
300
|
+
### Quality (weight 2×) — 8 points
|
|
301
|
+
|
|
302
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
303
|
+
|----|-----------|-----|-----------|----------------|
|
|
304
|
+
| C2.1 | Error handling | 2 | Keywords: `error`, `failure`, `fallback`, `if fails`, `on failure` | Failure cases addressed |
|
|
305
|
+
| C2.2 | Output format defined | 2 | Specifies what command produces (report, file, summary) | Output shape documented |
|
|
306
|
+
| C2.3 | Validation gates | 2 | Keywords: `checkpoint`, `verify`, `validate`, `before proceeding`, `confirm` | Safety checks present |
|
|
307
|
+
| C2.4 | Argument parsing shown | 2 | If `$ARGUMENTS` used: shows parsing (defaults, validation, conditional logic) | Arg handling demonstrated |
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## Hooks (20 points max)
|
|
312
|
+
|
|
313
|
+
### Validity (weight 3×) — 6 points
|
|
314
|
+
|
|
315
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
316
|
+
|----|-----------|-----|-----------|----------------|
|
|
317
|
+
| H1.1 | Valid JSON structure | 3 | File parses as valid JSON; hooks is an array | Syntactically correct |
|
|
318
|
+
| H1.2 | Recognized event types | 3 | Event values in: `PreToolUse`, `PostToolUse`, `Stop`, `SubagentStop`, `SessionStart`, `SessionEnd`, `UserPromptSubmit`, `PreCompact`, `Notification` | Known lifecycle events only |
|
|
319
|
+
|
|
320
|
+
### Security (weight 2×) — 8 points
|
|
321
|
+
|
|
322
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
323
|
+
|----|-----------|-----|-----------|----------------|
|
|
324
|
+
| H2.1 | No hardcoded credentials | 4 | Grep env/command values for: `password`, `secret`, `token`, `key` with literal values | Env var refs only, no literals |
|
|
325
|
+
| H2.2 | Scripts use error handling | 4 | Bash commands in hooks use `set -e`, `trap`, or `\|\| exit` | Scripts exit cleanly on failure |
|
|
326
|
+
|
|
327
|
+
### Quality (weight 2×) — 6 points
|
|
328
|
+
|
|
329
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
330
|
+
|----|-----------|-----|-----------|----------------|
|
|
331
|
+
| H3.1 | Scoped matchers | 3 | Matchers target specific tools or patterns, not `.*` or empty | Minimum necessary scope |
|
|
332
|
+
| H3.2 | Purpose documented | 3 | `description` field in each hook OR adjacent README explains purpose | Intent is clear |
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## MCP Config (20 points max)
|
|
337
|
+
|
|
338
|
+
### Structure (weight 3×) — 9 points
|
|
339
|
+
|
|
340
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
341
|
+
|----|-----------|-----|-----------|----------------|
|
|
342
|
+
| M1.1 | Valid JSON | 3 | File parses as valid JSON | Syntactically correct |
|
|
343
|
+
| M1.2 | `mcpServers` key present | 3 | Top-level key `mcpServers` exists as an object | Standard structure used |
|
|
344
|
+
| M1.3 | Server definitions complete | 3 | Each server has `command` (stdio) or `url` (SSE/HTTP) | Required fields present |
|
|
345
|
+
|
|
346
|
+
### Security (weight 2×) — 6 points
|
|
347
|
+
|
|
348
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
349
|
+
|----|-----------|-----|-----------|----------------|
|
|
350
|
+
| M2.1 | No hardcoded secrets | 3 | No literal values for `password`, `token`, `key`, `secret` in env sections | Credentials not in config file |
|
|
351
|
+
| M2.2 | Env vars for credentials | 3 | Credentials use `${ENV_VAR}` pattern | Env var references used |
|
|
352
|
+
|
|
353
|
+
### Documentation (weight 2×) — 5 points
|
|
354
|
+
|
|
355
|
+
| ID | Criterion | Pts | Detection | Pass Condition |
|
|
356
|
+
|----|-----------|-----|-----------|----------------|
|
|
357
|
+
| M3.1 | Descriptive server names | 2 | Server keys are meaningful (not `server1`, `test`, `mcp`) | Names indicate purpose |
|
|
358
|
+
| M3.2 | Required env vars documented | 3 | README.md, `.env.example`, or CLAUDE.md lists required vars | Setup is documented |
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## Detection Utilities
|
|
363
|
+
|
|
364
|
+
### Frontmatter Parser (Python)
|
|
365
|
+
```python
|
|
366
|
+
import re, yaml
|
|
367
|
+
|
|
368
|
+
def parse_frontmatter(content: str) -> dict:
|
|
369
|
+
m = re.search(r'^---\n(.*?)\n---', content, re.DOTALL)
|
|
370
|
+
return yaml.safe_load(m.group(1)) if m else {}
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Token Estimate
|
|
374
|
+
```python
|
|
375
|
+
def estimate_tokens(text: str) -> int:
|
|
376
|
+
return int(len(text.split()) * 1.3) # 1 token ≈ 0.75 words
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
### Jaccard Similarity (overlap detection)
|
|
380
|
+
```python
|
|
381
|
+
def jaccard(text1: str, text2: str) -> float:
|
|
382
|
+
s1 = set(text1.lower().split())
|
|
383
|
+
s2 = set(text2.lower().split())
|
|
384
|
+
return len(s1 & s2) / len(s1 | s2) if (s1 | s2) else 0.0
|
|
385
|
+
# Flag if result > 0.5
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
### Security Grep
|
|
389
|
+
```bash
|
|
390
|
+
grep -rn \
|
|
391
|
+
-e '/Users/' \
|
|
392
|
+
-e '/home/[a-z]' \
|
|
393
|
+
-e 'password\s*=' \
|
|
394
|
+
-e 'api_key\s*=' \
|
|
395
|
+
-e 'token\s*=' \
|
|
396
|
+
.claude/ .mcp.json \
|
|
397
|
+
--include="*.md" --include="*.json" --include="*.sh" 2>/dev/null \
|
|
398
|
+
| grep -v "node_modules" \
|
|
399
|
+
| grep -v "# " # skip comment lines
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
### Grade Calculator
|
|
403
|
+
```python
|
|
404
|
+
def grade(score: float) -> str:
|
|
405
|
+
if score >= 90: return "A"
|
|
406
|
+
if score >= 80: return "B"
|
|
407
|
+
if score >= 70: return "C"
|
|
408
|
+
if score >= 60: return "D"
|
|
409
|
+
return "F"
|
|
410
|
+
|
|
411
|
+
def score(obtained: float, max_pts: float) -> float:
|
|
412
|
+
return round((obtained / max_pts) * 100, 1)
|
|
413
|
+
```
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# scan-repo.sh — Discover and inventory all Claude Code components in a repository
|
|
3
|
+
# Usage: ./scan-repo.sh [path]
|
|
4
|
+
# Output: Structured inventory of all Claude Code components found
|
|
5
|
+
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
ROOT="${1:-.}"
|
|
9
|
+
SKILLS=()
|
|
10
|
+
AGENTS=()
|
|
11
|
+
COMMANDS=()
|
|
12
|
+
CLAUDE_MD=""
|
|
13
|
+
HOOKS=""
|
|
14
|
+
MCP=""
|
|
15
|
+
|
|
16
|
+
# ── Discovery ────────────────────────────────────────────────────────────────
|
|
17
|
+
|
|
18
|
+
# Skills: SKILL.md files anywhere under .claude/skills/ or plugins/*/skills/
|
|
19
|
+
while IFS= read -r file; do
|
|
20
|
+
SKILLS+=("$file")
|
|
21
|
+
done < <(find "$ROOT" \( \
|
|
22
|
+
-path '*/.claude/skills/*/SKILL.md' -o \
|
|
23
|
+
-path '*/plugins/*/skills/*/SKILL.md' \
|
|
24
|
+
\) -not -path '*/node_modules/*' 2>/dev/null | sort)
|
|
25
|
+
|
|
26
|
+
# Agents: .md files in .claude/agents/ or plugins/*/agents/
|
|
27
|
+
while IFS= read -r file; do
|
|
28
|
+
AGENTS+=("$file")
|
|
29
|
+
done < <(find "$ROOT" \( \
|
|
30
|
+
-path '*/.claude/agents/*.md' -o \
|
|
31
|
+
-path '*/plugins/*/agents/*.md' \
|
|
32
|
+
\) -not -path '*/node_modules/*' 2>/dev/null | sort)
|
|
33
|
+
|
|
34
|
+
# Commands: .md files in .claude/commands/ (recursive) or plugins/*/commands/
|
|
35
|
+
while IFS= read -r file; do
|
|
36
|
+
COMMANDS+=("$file")
|
|
37
|
+
done < <(find "$ROOT" \( \
|
|
38
|
+
-path '*/.claude/commands/*.md' -o \
|
|
39
|
+
-path '*/.claude/commands/**/*.md' -o \
|
|
40
|
+
-path '*/plugins/*/commands/**/*.md' \
|
|
41
|
+
\) -not -path '*/node_modules/*' 2>/dev/null | sort)
|
|
42
|
+
|
|
43
|
+
# CLAUDE.md: root or .claude/
|
|
44
|
+
if [ -f "$ROOT/CLAUDE.md" ]; then
|
|
45
|
+
CLAUDE_MD="$ROOT/CLAUDE.md"
|
|
46
|
+
elif [ -f "$ROOT/.claude/CLAUDE.md" ]; then
|
|
47
|
+
CLAUDE_MD="$ROOT/.claude/CLAUDE.md"
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
# Hooks: settings.json
|
|
51
|
+
if [ -f "$ROOT/.claude/settings.json" ]; then
|
|
52
|
+
HOOKS="$ROOT/.claude/settings.json"
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
# MCP config
|
|
56
|
+
if [ -f "$ROOT/.mcp.json" ]; then
|
|
57
|
+
MCP="$ROOT/.mcp.json"
|
|
58
|
+
elif [ -f "$ROOT/.claude/mcp.json" ]; then
|
|
59
|
+
MCP="$ROOT/.claude/mcp.json"
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
# ── Output ───────────────────────────────────────────────────────────────────
|
|
63
|
+
|
|
64
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
65
|
+
echo " Claude Code Repository Inventory"
|
|
66
|
+
echo " Path: $(realpath "$ROOT")"
|
|
67
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
68
|
+
echo ""
|
|
69
|
+
|
|
70
|
+
echo "📦 SKILLS (${#SKILLS[@]} found)"
|
|
71
|
+
if [ ${#SKILLS[@]} -eq 0 ]; then
|
|
72
|
+
echo " (none)"
|
|
73
|
+
else
|
|
74
|
+
for f in "${SKILLS[@]}"; do
|
|
75
|
+
# Extract name from frontmatter if possible
|
|
76
|
+
name=$(grep -m1 '^name:' "$f" 2>/dev/null | sed 's/name: *//' || echo "?")
|
|
77
|
+
echo " • $f [name: $name]"
|
|
78
|
+
done
|
|
79
|
+
fi
|
|
80
|
+
echo ""
|
|
81
|
+
|
|
82
|
+
echo "🤖 AGENTS (${#AGENTS[@]} found)"
|
|
83
|
+
if [ ${#AGENTS[@]} -eq 0 ]; then
|
|
84
|
+
echo " (none)"
|
|
85
|
+
else
|
|
86
|
+
for f in "${AGENTS[@]}"; do
|
|
87
|
+
name=$(grep -m1 '^name:' "$f" 2>/dev/null | sed 's/name: *//' || echo "?")
|
|
88
|
+
model=$(grep -m1 '^model:' "$f" 2>/dev/null | sed 's/model: *//' || echo "not specified ⚠️")
|
|
89
|
+
echo " • $f [name: $name | model: $model]"
|
|
90
|
+
done
|
|
91
|
+
fi
|
|
92
|
+
echo ""
|
|
93
|
+
|
|
94
|
+
echo "⚡ COMMANDS (${#COMMANDS[@]} found)"
|
|
95
|
+
if [ ${#COMMANDS[@]} -eq 0 ]; then
|
|
96
|
+
echo " (none)"
|
|
97
|
+
else
|
|
98
|
+
for f in "${COMMANDS[@]}"; do
|
|
99
|
+
name=$(grep -m1 '^name:' "$f" 2>/dev/null | sed 's/name: *//' || echo "?")
|
|
100
|
+
echo " • $f [name: $name]"
|
|
101
|
+
done
|
|
102
|
+
fi
|
|
103
|
+
echo ""
|
|
104
|
+
|
|
105
|
+
echo "📋 CLAUDE.md"
|
|
106
|
+
if [ -n "$CLAUDE_MD" ]; then
|
|
107
|
+
lines=$(wc -l < "$CLAUDE_MD" | tr -d ' ')
|
|
108
|
+
echo " ✓ $CLAUDE_MD [$lines lines]"
|
|
109
|
+
else
|
|
110
|
+
echo " ✗ Not found"
|
|
111
|
+
fi
|
|
112
|
+
echo ""
|
|
113
|
+
|
|
114
|
+
echo "🪝 HOOKS"
|
|
115
|
+
if [ -n "$HOOKS" ]; then
|
|
116
|
+
hook_count=$(grep -c '"event"' "$HOOKS" 2>/dev/null || echo "0")
|
|
117
|
+
echo " ✓ $HOOKS [$hook_count hook(s)]"
|
|
118
|
+
else
|
|
119
|
+
echo " ✗ Not found (.claude/settings.json)"
|
|
120
|
+
fi
|
|
121
|
+
echo ""
|
|
122
|
+
|
|
123
|
+
echo "🔌 MCP CONFIG"
|
|
124
|
+
if [ -n "$MCP" ]; then
|
|
125
|
+
server_count=$(grep -c '"type"' "$MCP" 2>/dev/null || echo "?")
|
|
126
|
+
echo " ✓ $MCP [~$server_count server(s)]"
|
|
127
|
+
else
|
|
128
|
+
echo " ✗ Not found (.mcp.json)"
|
|
129
|
+
fi
|
|
130
|
+
echo ""
|
|
131
|
+
|
|
132
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
133
|
+
TOTAL=$(( ${#SKILLS[@]} + ${#AGENTS[@]} + ${#COMMANDS[@]} ))
|
|
134
|
+
echo " Total components: $TOTAL"
|
|
135
|
+
echo " Summary: ${#SKILLS[@]} skills | ${#AGENTS[@]} agents | ${#COMMANDS[@]} commands"
|
|
136
|
+
EXTRAS=""
|
|
137
|
+
[ -n "$CLAUDE_MD" ] && EXTRAS+="CLAUDE.md "
|
|
138
|
+
[ -n "$HOOKS" ] && EXTRAS+="hooks "
|
|
139
|
+
[ -n "$MCP" ] && EXTRAS+="MCP "
|
|
140
|
+
echo " Config files: ${EXTRAS:-none}"
|
|
141
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
142
|
+
|
|
143
|
+
# ── Quick Security Sweep ─────────────────────────────────────────────────────
|
|
144
|
+
echo ""
|
|
145
|
+
echo "🔐 Security Sweep"
|
|
146
|
+
SECURITY_HITS=$(grep -rn \
|
|
147
|
+
-e '/Users/' \
|
|
148
|
+
-e '/home/[a-z]' \
|
|
149
|
+
-e 'password\s*=' \
|
|
150
|
+
-e 'api_key\s*=' \
|
|
151
|
+
-e 'token\s*=' \
|
|
152
|
+
"$ROOT/.claude/" "$ROOT/.mcp.json" \
|
|
153
|
+
--include="*.md" --include="*.json" --include="*.sh" \
|
|
154
|
+
2>/dev/null | grep -v "node_modules" | grep -v "# " | head -20 || true)
|
|
155
|
+
|
|
156
|
+
if [ -z "$SECURITY_HITS" ]; then
|
|
157
|
+
echo " ✓ No obvious hardcoded credentials or paths found"
|
|
158
|
+
else
|
|
159
|
+
echo " ⚠️ Potential issues detected:"
|
|
160
|
+
echo "$SECURITY_HITS" | sed 's/^/ /'
|
|
161
|
+
fi
|
|
162
|
+
echo ""
|