From 29e9c3a0239c748d918f0377f6d4491041aec556 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 22:14:58 +0000 Subject: [PATCH 01/11] feat: add submod ECC bundle (.claude/ecc-tools.json) --- .claude/ecc-tools.json | 171 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 .claude/ecc-tools.json diff --git a/.claude/ecc-tools.json b/.claude/ecc-tools.json new file mode 100644 index 0000000..a883559 --- /dev/null +++ b/.claude/ecc-tools.json @@ -0,0 +1,171 @@ +{ + "version": "1.3", + "schemaVersion": "1.0", + "generatedBy": "ecc-tools", + "generatedAt": "2026-04-08T22:14:36.080Z", + "repo": "https://github.com/bashandbone/submod", + "profiles": { + "requested": "core", + "recommended": "core", + "effective": "core", + "requestedAlias": "core", + "recommendedAlias": "core", + "effectiveAlias": "core" + }, + "requestedProfile": "core", + "profile": "core", + "recommendedProfile": "core", + "effectiveProfile": "core", + "tier": "free", + "requestedComponents": [ + "repo-baseline" + ], + "selectedComponents": [ + "repo-baseline" + ], + "requestedAddComponents": [], + "requestedRemoveComponents": [], + "blockedRemovalComponents": [], + "tierFilteredComponents": [], + "requestedRootPackages": [ + "runtime-core" + ], + "selectedRootPackages": [ + "runtime-core" + ], + "requestedPackages": [ + "runtime-core" + ], + "requestedAddPackages": [], + "requestedRemovePackages": [], + "selectedPackages": [ + "runtime-core" + ], + "packages": [ + "runtime-core" + ], + "blockedRemovalPackages": [], + "tierFilteredRootPackages": [], + "tierFilteredPackages": [], + "conflictingPackages": [], + "dependencyGraph": { + "runtime-core": [] + }, + "resolutionOrder": [ + "runtime-core" + ], + "requestedModules": [ + "runtime-core" + ], + "selectedModules": [ + "runtime-core" + ], + "modules": [ + "runtime-core" + ], + "managedFiles": [ + ".claude/skills/submod/SKILL.md", + ".agents/skills/submod/SKILL.md", + ".agents/skills/submod/agents/openai.yaml", + ".claude/identity.json", + ".codex/config.toml", + ".codex/AGENTS.md", + ".codex/agents/explorer.toml", + ".codex/agents/reviewer.toml", + ".codex/agents/docs-researcher.toml", + ".claude/homunculus/instincts/inherited/submod-instincts.yaml" + ], + "packageFiles": { + "runtime-core": [ + ".claude/skills/submod/SKILL.md", + ".agents/skills/submod/SKILL.md", + ".agents/skills/submod/agents/openai.yaml", + ".claude/identity.json", + ".codex/config.toml", + ".codex/AGENTS.md", + ".codex/agents/explorer.toml", + ".codex/agents/reviewer.toml", + ".codex/agents/docs-researcher.toml", + ".claude/homunculus/instincts/inherited/submod-instincts.yaml" + ] + }, + "moduleFiles": { + "runtime-core": [ + ".claude/skills/submod/SKILL.md", + ".agents/skills/submod/SKILL.md", + ".agents/skills/submod/agents/openai.yaml", + ".claude/identity.json", + ".codex/config.toml", + ".codex/AGENTS.md", + ".codex/agents/explorer.toml", + ".codex/agents/reviewer.toml", + ".codex/agents/docs-researcher.toml", + ".claude/homunculus/instincts/inherited/submod-instincts.yaml" + ] + }, + "files": [ + { + "moduleId": "runtime-core", + "path": ".claude/skills/submod/SKILL.md", + "description": "Repository-specific Claude Code skill generated from git history." + }, + { + "moduleId": "runtime-core", + "path": ".agents/skills/submod/SKILL.md", + "description": "Codex-facing copy of the generated repository skill." + }, + { + "moduleId": "runtime-core", + "path": ".agents/skills/submod/agents/openai.yaml", + "description": "Codex skill metadata so the repo skill appears cleanly in the skill interface." + }, + { + "moduleId": "runtime-core", + "path": ".claude/identity.json", + "description": "Suggested identity.json baseline derived from repository conventions." + }, + { + "moduleId": "runtime-core", + "path": ".codex/config.toml", + "description": "Repo-local Codex MCP and multi-agent baseline aligned with ECC defaults." + }, + { + "moduleId": "runtime-core", + "path": ".codex/AGENTS.md", + "description": "Codex usage guide that points at the generated repo skill and workflow bundle." + }, + { + "moduleId": "runtime-core", + "path": ".codex/agents/explorer.toml", + "description": "Read-only explorer role config for Codex multi-agent work." + }, + { + "moduleId": "runtime-core", + "path": ".codex/agents/reviewer.toml", + "description": "Read-only reviewer role config focused on correctness and security." + }, + { + "moduleId": "runtime-core", + "path": ".codex/agents/docs-researcher.toml", + "description": "Read-only docs researcher role config for API verification." + }, + { + "moduleId": "runtime-core", + "path": ".claude/homunculus/instincts/inherited/submod-instincts.yaml", + "description": "Continuous-learning instincts derived from repository patterns." + } + ], + "workflows": [], + "adapters": { + "claudeCode": { + "skillPath": ".claude/skills/submod/SKILL.md", + "identityPath": ".claude/identity.json", + "commandPaths": [] + }, + "codex": { + "configPath": ".codex/config.toml", + "agentsGuidePath": ".codex/AGENTS.md", + "skillPath": ".agents/skills/submod/SKILL.md" + } + } +} \ No newline at end of file From e4d69c83b461a5d81f03a174312a677f132f02a0 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 22:14:59 +0000 Subject: [PATCH 02/11] feat: add submod ECC bundle (.claude/skills/submod/SKILL.md) --- .claude/skills/submod/SKILL.md | 88 ++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 .claude/skills/submod/SKILL.md diff --git a/.claude/skills/submod/SKILL.md b/.claude/skills/submod/SKILL.md new file mode 100644 index 0000000..28474a1 --- /dev/null +++ b/.claude/skills/submod/SKILL.md @@ -0,0 +1,88 @@ +```markdown +# submod Development Patterns + +> Auto-generated skill from repository analysis + +## Overview +This skill teaches you the core development patterns and workflows used in the `submod` Rust repository. `submod` manages Git submodules, focusing on toggling and tracking their "active" status. You'll learn the project's coding conventions, how to update submodule activation logic, and how to maintain and test your changes effectively. + +## Coding Conventions + +### File Naming +- Use **snake_case** for file and module names. + - Example: `git_manager.rs`, `git2_ops.rs` + +### Import Style +- Use **relative imports** within the crate. + - Example: + ```rust + use crate::git_ops::git2_ops; + ``` + +### Export Style +- Use **named exports** for functions and structs. + - Example: + ```rust + pub fn update_active_status(...) { ... } + pub struct Submodule { ... } + ``` + +### Commit Messages +- Follow **conventional commit** style. +- Use the `feat` prefix for new features. + - Example: `feat: add support for toggling submodule active status` + +## Workflows + +### Update Submodule Active Status +**Trigger:** When you need to change how submodule activation is tracked or persisted, especially regarding the `active` field in `.gitmodules`. +**Command:** `/update-submodule-active` + +1. **Modify submodule management logic** + Update the logic in `src/git_manager.rs` to reflect changes in how the `active` status is handled. + ```rust + // Example: Toggle active status + pub fn set_active(&mut self, active: bool) { + self.active = active; + } + ``` +2. **Update serialization and writing logic** + Ensure that both `src/git_ops/git2_ops.rs` and `src/git_ops/gix_ops.rs` correctly serialize and persist the `active` field. + ```rust + // Example: Serialize 'active' field + let submodule_data = format!("active = {}", submodule.active); + ``` +3. **Update or add tests** + Add or update tests in `tests/git_ops_tests.rs` and `tests/integration_tests.rs` to cover the new or changed behavior. + ```rust + #[test] + fn test_active_status_toggle() { + // ...test logic... + } + ``` +4. **Update dependencies (optional)** + If your changes require new dependencies, update `Cargo.lock`. + +## Testing Patterns + +- **Test Framework:** Not explicitly detected; standard Rust testing conventions are used. +- **Test File Pattern:** Test files are named with `*.test.*` (e.g., `git_ops_tests.rs`). +- **Example Test:** + ```rust + #[test] + fn test_submodule_activation() { + // Arrange + let mut submodule = Submodule::new("example"); + // Act + submodule.set_active(true); + // Assert + assert!(submodule.active); + } + ``` + +## Commands + +| Command | Purpose | +|---------------------------|--------------------------------------------------------------| +| /update-submodule-active | Update logic and persistence for submodule active status | +``` From 3da9146669f02dd133b962cba0156ac38a246283 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 22:15:01 +0000 Subject: [PATCH 03/11] feat: add submod ECC bundle (.agents/skills/submod/SKILL.md) --- .agents/skills/submod/SKILL.md | 88 ++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 .agents/skills/submod/SKILL.md diff --git a/.agents/skills/submod/SKILL.md b/.agents/skills/submod/SKILL.md new file mode 100644 index 0000000..28474a1 --- /dev/null +++ b/.agents/skills/submod/SKILL.md @@ -0,0 +1,88 @@ +```markdown +# submod Development Patterns + +> Auto-generated skill from repository analysis + +## Overview +This skill teaches you the core development patterns and workflows used in the `submod` Rust repository. `submod` manages Git submodules, focusing on toggling and tracking their "active" status. You'll learn the project's coding conventions, how to update submodule activation logic, and how to maintain and test your changes effectively. + +## Coding Conventions + +### File Naming +- Use **snake_case** for file and module names. + - Example: `git_manager.rs`, `git2_ops.rs` + +### Import Style +- Use **relative imports** within the crate. + - Example: + ```rust + use crate::git_ops::git2_ops; + ``` + +### Export Style +- Use **named exports** for functions and structs. + - Example: + ```rust + pub fn update_active_status(...) { ... } + pub struct Submodule { ... } + ``` + +### Commit Messages +- Follow **conventional commit** style. +- Use the `feat` prefix for new features. + - Example: `feat: add support for toggling submodule active status` + +## Workflows + +### Update Submodule Active Status +**Trigger:** When you need to change how submodule activation is tracked or persisted, especially regarding the `active` field in `.gitmodules`. +**Command:** `/update-submodule-active` + +1. **Modify submodule management logic** + Update the logic in `src/git_manager.rs` to reflect changes in how the `active` status is handled. + ```rust + // Example: Toggle active status + pub fn set_active(&mut self, active: bool) { + self.active = active; + } + ``` +2. **Update serialization and writing logic** + Ensure that both `src/git_ops/git2_ops.rs` and `src/git_ops/gix_ops.rs` correctly serialize and persist the `active` field. + ```rust + // Example: Serialize 'active' field + let submodule_data = format!("active = {}", submodule.active); + ``` +3. **Update or add tests** + Add or update tests in `tests/git_ops_tests.rs` and `tests/integration_tests.rs` to cover the new or changed behavior. + ```rust + #[test] + fn test_active_status_toggle() { + // ...test logic... + } + ``` +4. **Update dependencies (optional)** + If your changes require new dependencies, update `Cargo.lock`. + +## Testing Patterns + +- **Test Framework:** Not explicitly detected; standard Rust testing conventions are used. +- **Test File Pattern:** Test files are named with `*.test.*` (e.g., `git_ops_tests.rs`). +- **Example Test:** + ```rust + #[test] + fn test_submodule_activation() { + // Arrange + let mut submodule = Submodule::new("example"); + // Act + submodule.set_active(true); + // Assert + assert!(submodule.active); + } + ``` + +## Commands + +| Command | Purpose | +|---------------------------|--------------------------------------------------------------| +| /update-submodule-active | Update logic and persistence for submodule active status | +``` From 87c172a9534bd0dddbcd015e688d50cb863d0eb8 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 22:15:02 +0000 Subject: [PATCH 04/11] feat: add submod ECC bundle (.agents/skills/submod/agents/openai.yaml) --- .agents/skills/submod/agents/openai.yaml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .agents/skills/submod/agents/openai.yaml diff --git a/.agents/skills/submod/agents/openai.yaml b/.agents/skills/submod/agents/openai.yaml new file mode 100644 index 0000000..82e9417 --- /dev/null +++ b/.agents/skills/submod/agents/openai.yaml @@ -0,0 +1,6 @@ +interface: + display_name: "Submod" + short_description: "Repo-specific patterns and workflows for submod" + default_prompt: "Use the submod repo skill to follow existing architecture, testing, and workflow conventions." +policy: + allow_implicit_invocation: true \ No newline at end of file From b639c1b46cced7e70d3077c223aef3232a49953e Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 22:15:03 +0000 Subject: [PATCH 05/11] feat: add submod ECC bundle (.claude/identity.json) --- .claude/identity.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .claude/identity.json diff --git a/.claude/identity.json b/.claude/identity.json new file mode 100644 index 0000000..eafe436 --- /dev/null +++ b/.claude/identity.json @@ -0,0 +1,14 @@ +{ + "version": "2.0", + "technicalLevel": "technical", + "preferredStyle": { + "verbosity": "detailed", + "codeComments": true, + "explanations": true + }, + "domains": [ + "rust" + ], + "suggestedBy": "ecc-tools-repo-analysis", + "createdAt": "2026-04-08T22:14:56.959Z" +} \ No newline at end of file From b9532fdc1d96028b7060fad36ae631fcd2dc9d8c Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 22:15:05 +0000 Subject: [PATCH 06/11] feat: add submod ECC bundle (.codex/config.toml) --- .codex/config.toml | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .codex/config.toml diff --git a/.codex/config.toml b/.codex/config.toml new file mode 100644 index 0000000..bc1ee67 --- /dev/null +++ b/.codex/config.toml @@ -0,0 +1,48 @@ +#:schema https://developers.openai.com/codex/config-schema.json + +# ECC Tools generated Codex baseline +approval_policy = "on-request" +sandbox_mode = "workspace-write" +web_search = "live" + +[mcp_servers.github] +command = "npx" +args = ["-y", "@modelcontextprotocol/server-github"] + +[mcp_servers.context7] +command = "npx" +args = ["-y", "@upstash/context7-mcp@latest"] + +[mcp_servers.exa] +url = "https://mcp.exa.ai/mcp" + +[mcp_servers.memory] +command = "npx" +args = ["-y", "@modelcontextprotocol/server-memory"] + +[mcp_servers.playwright] +command = "npx" +args = ["-y", "@playwright/mcp@latest", "--extension"] + +[mcp_servers.sequential-thinking] +command = "npx" +args = ["-y", "@modelcontextprotocol/server-sequential-thinking"] + +[features] +multi_agent = true + +[agents] +max_threads = 6 +max_depth = 1 + +[agents.explorer] +description = "Read-only codebase explorer for gathering evidence before changes are proposed." +config_file = "agents/explorer.toml" + +[agents.reviewer] +description = "PR reviewer focused on correctness, security, and missing tests." +config_file = "agents/reviewer.toml" + +[agents.docs_researcher] +description = "Documentation specialist that verifies APIs, framework behavior, and release notes." +config_file = "agents/docs-researcher.toml" \ No newline at end of file From da702bbb9e0e16b9243013b98e70f23865e0d730 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 22:15:06 +0000 Subject: [PATCH 07/11] feat: add submod ECC bundle (.codex/AGENTS.md) --- .codex/AGENTS.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .codex/AGENTS.md diff --git a/.codex/AGENTS.md b/.codex/AGENTS.md new file mode 100644 index 0000000..cd21352 --- /dev/null +++ b/.codex/AGENTS.md @@ -0,0 +1,26 @@ +# ECC for Codex CLI + +This supplements the root `AGENTS.md` with a repo-local ECC baseline. + +## Repo Skill + +- Repo-generated Codex skill: `.agents/skills/submod/SKILL.md` +- Claude-facing companion skill: `.claude/skills/submod/SKILL.md` +- Keep user-specific credentials and private MCPs in `~/.codex/config.toml`, not in this repo. + +## MCP Baseline + +Treat `.codex/config.toml` as the default ECC-safe baseline for work in this repository. +The generated baseline enables GitHub, Context7, Exa, Memory, Playwright, and Sequential Thinking. + +## Multi-Agent Support + +- Explorer: read-only evidence gathering +- Reviewer: correctness, security, and regression review +- Docs researcher: API and release-note verification + +## Workflow Files + +- No dedicated workflow command files were generated for this repo. + +Use these workflow files as reusable task scaffolds when the detected repository workflows recur. \ No newline at end of file From fe14f4c3a87b07d9ab8c599f53586c11687db9f1 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 22:15:07 +0000 Subject: [PATCH 08/11] feat: add submod ECC bundle (.codex/agents/explorer.toml) --- .codex/agents/explorer.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .codex/agents/explorer.toml diff --git a/.codex/agents/explorer.toml b/.codex/agents/explorer.toml new file mode 100644 index 0000000..732df7a --- /dev/null +++ b/.codex/agents/explorer.toml @@ -0,0 +1,9 @@ +model = "gpt-5.4" +model_reasoning_effort = "medium" +sandbox_mode = "read-only" + +developer_instructions = """ +Stay in exploration mode. +Trace the real execution path, cite files and symbols, and avoid proposing fixes unless the parent agent asks for them. +Prefer targeted search and file reads over broad scans. +""" \ No newline at end of file From f1e2c56a7df2f00cbf4e03cea7a91de43e3e4164 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 22:15:08 +0000 Subject: [PATCH 09/11] feat: add submod ECC bundle (.codex/agents/reviewer.toml) --- .codex/agents/reviewer.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .codex/agents/reviewer.toml diff --git a/.codex/agents/reviewer.toml b/.codex/agents/reviewer.toml new file mode 100644 index 0000000..b13ed9c --- /dev/null +++ b/.codex/agents/reviewer.toml @@ -0,0 +1,9 @@ +model = "gpt-5.4" +model_reasoning_effort = "high" +sandbox_mode = "read-only" + +developer_instructions = """ +Review like an owner. +Prioritize correctness, security, behavioral regressions, and missing tests. +Lead with concrete findings and avoid style-only feedback unless it hides a real bug. +""" \ No newline at end of file From fef9031a3ca173f42a44c32983321ab6cc2b5973 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 22:15:09 +0000 Subject: [PATCH 10/11] feat: add submod ECC bundle (.codex/agents/docs-researcher.toml) --- .codex/agents/docs-researcher.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .codex/agents/docs-researcher.toml diff --git a/.codex/agents/docs-researcher.toml b/.codex/agents/docs-researcher.toml new file mode 100644 index 0000000..0daae57 --- /dev/null +++ b/.codex/agents/docs-researcher.toml @@ -0,0 +1,9 @@ +model = "gpt-5.4" +model_reasoning_effort = "medium" +sandbox_mode = "read-only" + +developer_instructions = """ +Verify APIs, framework behavior, and release-note claims against primary documentation before changes land. +Cite the exact docs or file paths that support each claim. +Do not invent undocumented behavior. +""" \ No newline at end of file From 01e3f99f7aedb5b06e2b41a31b3d88b226871561 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 22:15:10 +0000 Subject: [PATCH 11/11] feat: add submod ECC bundle (.claude/homunculus/instincts/inherited/submod-instincts.yaml) --- .../instincts/inherited/submod-instincts.yaml | 311 ++++++++++++++++++ 1 file changed, 311 insertions(+) create mode 100644 .claude/homunculus/instincts/inherited/submod-instincts.yaml diff --git a/.claude/homunculus/instincts/inherited/submod-instincts.yaml b/.claude/homunculus/instincts/inherited/submod-instincts.yaml new file mode 100644 index 0000000..86d7dc7 --- /dev/null +++ b/.claude/homunculus/instincts/inherited/submod-instincts.yaml @@ -0,0 +1,311 @@ +# Instincts generated from https://github.com/bashandbone/submod +# Generated: 2026-04-08T22:14:56.959Z +# Version: 2.0 +# NOTE: This file supplements (does not replace) any existing curated instincts. +# High-confidence manually curated instincts should be preserved alongside these. + +--- +id: submod-commit-conventional +trigger: "when writing a commit message" +confidence: 0.85 +domain: git +source: repo-analysis +source_repo: https://github.com/bashandbone/submod +--- + +# Submod Commit Conventional + +## Action + +Use conventional commit format with prefixes: feat + +## Evidence + +- 3 commits analyzed +- Detected conventional commit pattern +- Examples: feat(submodule): disable command updates .gitmodules active status + +--- +id: submod-commit-length +trigger: "when writing a commit message" +confidence: 0.6 +domain: git +source: repo-analysis +source_repo: https://github.com/bashandbone/submod +--- + +# Submod Commit Length + +## Action + +Write moderate-length commit messages (~66 characters) + +## Evidence + +- Average commit message length: 66 chars +- Based on 3 commits + +--- +id: submod-naming-files +trigger: "when creating a new file" +confidence: 0.8 +domain: code-style +source: repo-analysis +source_repo: https://github.com/bashandbone/submod +--- + +# Submod Naming Files + +## Action + +Use snake_case naming convention + +## Evidence + +- Analyzed file naming patterns in repository +- Dominant pattern: snake_case + +--- +id: submod-import-relative +trigger: "when importing modules" +confidence: 0.75 +domain: code-style +source: repo-analysis +source_repo: https://github.com/bashandbone/submod +--- + +# Submod Import Relative + +## Action + +Use relative imports for project files + +## Evidence + +- Import analysis shows relative import pattern +- Example: import { x } from '../lib/x' + +--- +id: submod-export-style +trigger: "when exporting from a module" +confidence: 0.7 +domain: code-style +source: repo-analysis +source_repo: https://github.com/bashandbone/submod +--- + +# Submod Export Style + +## Action + +Prefer named exports + +## Evidence + +- Export pattern analysis +- Dominant style: named + +--- +id: submod-test-separate +trigger: "when writing tests" +confidence: 0.8 +domain: testing +source: repo-analysis +source_repo: https://github.com/bashandbone/submod +--- + +# Submod Test Separate + +## Action + +Place tests in the tests/ or __tests__/ directory, mirroring src structure + +## Evidence + +- Separate test directory pattern detected +- Tests live in dedicated test folders + +--- +id: submod-workflow-update-submodule-active-status +trigger: "when doing update submodule active status" +confidence: 0.6 +domain: workflow +source: repo-analysis +source_repo: https://github.com/bashandbone/submod +--- + +# Submod Workflow Update Submodule Active Status + +## Action + +Follow the update-submodule-active-status workflow: +1. Modify submodule management logic in src/git_manager.rs +2. Update serialization and writing logic in src/git_ops/git2_ops.rs and src/git_ops/gix_ops.rs +3. Optionally update or add tests in tests/git_ops_tests.rs and tests/integration_tests.rs +4. Optionally update dependencies in Cargo.lock + +## Evidence + +- Workflow detected from commit patterns +- Frequency: ~2x per month +- Files: src/git_manager.rs, src/git_ops/git2_ops.rs, src/git_ops/gix_ops.rs + +--- +id: submod-instinct-naming +trigger: "When creating or renaming files, functions, classes, or constants" +confidence: 0.85 +domain: code-style +source: repo-analysis +source_repo: bashandbone/submod +--- + +# Submod Instinct Naming + +## Action + +Use snake_case for files, camelCase for functions, PascalCase for classes, and SCREAMING_SNAKE_CASE for constants + +## Evidence + +- Pattern in namingConventions in analysis +- Consistent file/function/class/constant names in src/git_manager.rs and src/git_ops/* + +--- +id: submod-instinct-imports +trigger: "When importing modules within the codebase" +confidence: 0.8 +domain: code-style +source: repo-analysis +source_repo: bashandbone/submod +--- + +# Submod Instinct Imports + +## Action + +Use relative imports + +## Evidence + +- importStyle: relative in codeStyle pattern +- Relative imports in src/git_ops/git2_ops.rs and src/git_ops/gix_ops.rs + +--- +id: submod-instinct-exports +trigger: "When exporting functions or types from a module" +confidence: 0.8 +domain: code-style +source: repo-analysis +source_repo: bashandbone/submod +--- + +# Submod Instinct Exports + +## Action + +Use named exports + +## Evidence + +- exportStyle: named in codeStyle pattern +- Named exports in src/git_ops/git2_ops.rs + +--- +id: submod-instinct-tests-location +trigger: "When adding or updating tests" +confidence: 0.85 +domain: testing +source: repo-analysis +source_repo: bashandbone/submod +--- + +# Submod Instinct Tests Location + +## Action + +Place tests in the tests/ directory, separate from src/ + +## Evidence + +- testLocation: separate in architecture pattern +- Test files found in tests/git_ops_tests.rs and tests/integration_tests.rs + +--- +id: submod-instinct-tests-pattern +trigger: "When writing tests for new or updated features" +confidence: 0.8 +domain: testing +source: repo-analysis +source_repo: bashandbone/submod +--- + +# Submod Instinct Tests Pattern + +## Action + +Add or update tests in both unit (tests/git_ops_tests.rs) and integration (tests/integration_tests.rs) test files + +## Evidence + +- Workflow step: Optionally update or add tests in tests/git_ops_tests.rs and tests/integration_tests.rs +- Example commits updating both test files + +--- +id: submod-instinct-commit-format +trigger: "When writing a commit message" +confidence: 0.9 +domain: git +source: repo-analysis +source_repo: bashandbone/submod +--- + +# Submod Instinct Commit Format + +## Action + +Use the conventional commit format with 'feat' prefix for features, optionally with scope (e.g., feat(submodule): ...) + +## Evidence + +- type: conventional, prefixes: ["feat"] in commits pattern +- Example: feat(submodule): disable command updates .gitmodules active status + +--- +id: submod-instinct-commit-length +trigger: "When composing a commit message" +confidence: 0.7 +domain: git +source: repo-analysis +source_repo: bashandbone/submod +--- + +# Submod Instinct Commit Length + +## Action + +Keep the commit message concise, around 66 characters on average + +## Evidence + +- averageLength: 66 in commits pattern + +--- +id: submod-instinct-update-submodule-active-status +trigger: "When someone needs to change how submodule activation is tracked or persisted, especially regarding the 'active' field in .gitmodules" +confidence: 0.95 +domain: workflow +source: repo-analysis +source_repo: bashandbone/submod +--- + +# Submod Instinct Update Submodule Active Status + +## Action + +Modify src/git_manager.rs, update serialization in src/git_ops/git2_ops.rs and src/git_ops/gix_ops.rs, optionally update/add tests in tests/git_ops_tests.rs and tests/integration_tests.rs, and optionally update dependencies in Cargo.lock + +## Evidence + +- Workflow: update-submodule-active-status +- Commit sequence and files involved in workflow pattern +