From 60ba14f4aef6caaf7be06a7001c2bb5a047ef57f Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 20:27:13 +0000 Subject: [PATCH 01/12] feat: add shipyard-agent ECC bundle (.claude/ecc-tools.json) --- .claude/ecc-tools.json | 204 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 204 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..056f700 --- /dev/null +++ b/.claude/ecc-tools.json @@ -0,0 +1,204 @@ +{ + "version": "1.3", + "schemaVersion": "1.0", + "generatedBy": "ecc-tools", + "generatedAt": "2026-03-23T20:27:11.429Z", + "repo": "https://github.com/maxpetrusenko/shipyard-agent", + "profiles": { + "requested": "standard", + "recommended": "standard", + "effective": "standard", + "requestedAlias": "developer", + "recommendedAlias": "developer", + "effectiveAlias": "developer" + }, + "requestedProfile": "developer", + "profile": "developer", + "recommendedProfile": "developer", + "effectiveProfile": "developer", + "tier": "free", + "requestedComponents": [ + "repo-baseline", + "workflow-automation" + ], + "selectedComponents": [ + "repo-baseline", + "workflow-automation" + ], + "requestedAddComponents": [], + "requestedRemoveComponents": [], + "blockedRemovalComponents": [], + "tierFilteredComponents": [], + "requestedRootPackages": [ + "runtime-core", + "workflow-pack" + ], + "selectedRootPackages": [ + "runtime-core", + "workflow-pack" + ], + "requestedPackages": [ + "runtime-core", + "workflow-pack" + ], + "requestedAddPackages": [], + "requestedRemovePackages": [], + "selectedPackages": [ + "runtime-core", + "workflow-pack" + ], + "packages": [ + "runtime-core", + "workflow-pack" + ], + "blockedRemovalPackages": [], + "tierFilteredRootPackages": [], + "tierFilteredPackages": [], + "conflictingPackages": [], + "dependencyGraph": { + "runtime-core": [], + "workflow-pack": [ + "runtime-core" + ] + }, + "resolutionOrder": [ + "runtime-core", + "workflow-pack" + ], + "requestedModules": [ + "runtime-core", + "workflow-pack" + ], + "selectedModules": [ + "runtime-core", + "workflow-pack" + ], + "modules": [ + "runtime-core", + "workflow-pack" + ], + "managedFiles": [ + ".claude/skills/shipyard-agent/SKILL.md", + ".agents/skills/shipyard-agent/SKILL.md", + ".agents/skills/shipyard-agent/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/shipyard-agent-instincts.yaml", + ".claude/commands/feature-development.md" + ], + "packageFiles": { + "runtime-core": [ + ".claude/skills/shipyard-agent/SKILL.md", + ".agents/skills/shipyard-agent/SKILL.md", + ".agents/skills/shipyard-agent/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/shipyard-agent-instincts.yaml" + ], + "workflow-pack": [ + ".claude/commands/feature-development.md" + ] + }, + "moduleFiles": { + "runtime-core": [ + ".claude/skills/shipyard-agent/SKILL.md", + ".agents/skills/shipyard-agent/SKILL.md", + ".agents/skills/shipyard-agent/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/shipyard-agent-instincts.yaml" + ], + "workflow-pack": [ + ".claude/commands/feature-development.md" + ] + }, + "files": [ + { + "moduleId": "runtime-core", + "path": ".claude/skills/shipyard-agent/SKILL.md", + "description": "Repository-specific Claude Code skill generated from git history." + }, + { + "moduleId": "runtime-core", + "path": ".agents/skills/shipyard-agent/SKILL.md", + "description": "Codex-facing copy of the generated repository skill." + }, + { + "moduleId": "runtime-core", + "path": ".agents/skills/shipyard-agent/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/shipyard-agent-instincts.yaml", + "description": "Continuous-learning instincts derived from repository patterns." + }, + { + "moduleId": "workflow-pack", + "path": ".claude/commands/feature-development.md", + "description": "Workflow command scaffold for feature-development." + } + ], + "workflows": [ + { + "command": "feature-development", + "path": ".claude/commands/feature-development.md" + } + ], + "adapters": { + "claudeCode": { + "skillPath": ".claude/skills/shipyard-agent/SKILL.md", + "identityPath": ".claude/identity.json", + "commandPaths": [ + ".claude/commands/feature-development.md" + ] + }, + "codex": { + "configPath": ".codex/config.toml", + "agentsGuidePath": ".codex/AGENTS.md", + "skillPath": ".agents/skills/shipyard-agent/SKILL.md" + } + } +} \ No newline at end of file From 7fd686963a32b3fa22270eea4bea1594030fd27e Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 20:27:13 +0000 Subject: [PATCH 02/12] feat: add shipyard-agent ECC bundle (.claude/skills/shipyard-agent/SKILL.md) --- .claude/skills/shipyard-agent/SKILL.md | 257 +++++++++++++++++++++++++ 1 file changed, 257 insertions(+) create mode 100644 .claude/skills/shipyard-agent/SKILL.md diff --git a/.claude/skills/shipyard-agent/SKILL.md b/.claude/skills/shipyard-agent/SKILL.md new file mode 100644 index 0000000..edc5c6c --- /dev/null +++ b/.claude/skills/shipyard-agent/SKILL.md @@ -0,0 +1,257 @@ +--- +name: shipyard-agent-conventions +description: Development conventions and patterns for shipyard-agent. TypeScript Express project with mixed commits. +--- + +# Shipyard Agent Conventions + +> Generated from [maxpetrusenko/shipyard-agent](https://github.com/maxpetrusenko/shipyard-agent) on 2026-03-23 + +## Overview + +This skill teaches Claude the development patterns and conventions used in shipyard-agent. + +## Tech Stack + +- **Primary Language**: TypeScript +- **Framework**: Express +- **Architecture**: type-based module organization +- **Test Location**: separate +- **Test Framework**: vitest + +## When to Use This Skill + +Activate this skill when: +- Making changes to this repository +- Adding new features following established patterns +- Writing tests that match project conventions +- Creating commits with proper message format + +## Commit Conventions + +Follow these commit message conventions based on 8 analyzed commits. + +### Commit Style: Mixed Style + +### Prefixes Used + +- `feat` +- `docs` +- `fix` +- `chore` + +### Message Guidelines + +- Average message length: ~53 characters +- Keep first line concise and descriptive +- Use imperative mood ("Add feature" not "Added feature") + + +*Commit message example* + +```text +feat: polish ship-agent to 10/10 — 13 targeted improvements +``` + +*Commit message example* + +```text +chore: gitignore AGENTS.md and CLAUDE.md +``` + +*Commit message example* + +```text +docs: add README, presearch, and agent documentation +``` + +*Commit message example* + +```text +fix: use npx tsx in bench.sh for reliable resolution +``` + +*Commit message example* + +```text +feat: standalone ship-agent with bench harness +``` + +*Commit message example* + +```text +docs: add critical test evidence and submission artifacts +``` + +*Commit message example* + +```text +fix: return 401 for invalid firebase bearer tokens +``` + +*Commit message example* + +```text +feat: stabilize board drag sync and add e2e test harness +``` + +## Architecture + +### Project Structure: Single Package + +This project uses **type-based** module organization. + +### Source Layout + +``` +src/ +├── config/ +├── context/ +├── graph/ +├── multi-agent/ +├── runtime/ +├── server/ +├── tools/ +``` + +### Entry Points + +- `src/app.ts` +- `src/index.ts` + +### Configuration Files + +- `mvp-1-collab-board/app/eslint.config.js` +- `mvp-1-collab-board/app/package.json` +- `mvp-1-collab-board/app/playwright.config.ts` +- `mvp-1-collab-board/app/tsconfig.json` +- `mvp-1-collab-board/app/vite.config.ts` +- `mvp-1-collab-board/functions/package.json` +- `package.json` +- `tsconfig.json` +- `vitest.config.ts` + +### Guidelines + +- Group code by type (components, services, utils) +- Keep related functionality in the same type folder +- Avoid circular dependencies between type folders + +## Code Style + +### Language: TypeScript + +### Naming Conventions + +| Element | Convention | +|---------|------------| +| Files | camelCase | +| Functions | camelCase | +| Classes | PascalCase | +| Constants | SCREAMING_SNAKE_CASE | + +### Import Style: Mixed Style + +### Export Style: Named Exports + + +*Preferred export style* + +```typescript +// Use named exports +export function calculateTotal() { ... } +export const TAX_RATE = 0.1 +export interface Order { ... } +``` + +## Testing + +### Test Framework: vitest + +### File Pattern: `*.test.ts` + +### Test Types + +- **Unit tests**: Test individual functions and components in isolation +- **E2e tests**: Test complete user flows through the application + + +*Test file structure* + +```typescript +import { describe, it, expect } from 'vitest' + +describe('MyFunction', () => { + it('should return expected result', () => { + const result = myFunction(input) + expect(result).toBe(expected) + }) +}) +``` + +## Error Handling + +### Error Handling Style: Try-Catch Blocks + + +*Standard error handling pattern* + +```typescript +try { + const result = await riskyOperation() + return result +} catch (error) { + console.error('Operation failed:', error) + throw new Error('User-friendly message') +} +``` + +## Common Workflows + +These workflows were detected from analyzing commit patterns. + +### Feature Development + +Standard feature implementation workflow + +**Frequency**: ~16 times per month + +**Steps**: +1. Add feature implementation +2. Add tests for feature +3. Update documentation + +**Files typically involved**: +- `mvp-1-collab-board/app/src/components/*` +- `mvp-1-collab-board/app/src/firebase/*` +- `mvp-1-collab-board/app/src/pages/*` +- `**/*.test.*` +- `**/api/**` + +**Example commit sequence**: +``` +Add planning docs and decision log from CollabBoard requirements +Close requirements gaps and map tasks to Linear tickets +Revert AGENTS and add submission PDF package +``` + + +## Best Practices + +Based on analysis of the codebase, follow these practices: + +### Do + +- Write tests using vitest +- Follow *.test.ts naming pattern +- Use camelCase for file names +- Prefer named exports + +### Don't + +- Don't skip tests for new features +- Don't deviate from established patterns without discussion + +--- + +*This skill was auto-generated by [ECC Tools](https://ecc.tools). Review and customize as needed for your team.* From 3527c37cca633ee322526ea6ed30cb3644fa44e7 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 20:27:14 +0000 Subject: [PATCH 03/12] feat: add shipyard-agent ECC bundle (.agents/skills/shipyard-agent/SKILL.md) --- .agents/skills/shipyard-agent/SKILL.md | 257 +++++++++++++++++++++++++ 1 file changed, 257 insertions(+) create mode 100644 .agents/skills/shipyard-agent/SKILL.md diff --git a/.agents/skills/shipyard-agent/SKILL.md b/.agents/skills/shipyard-agent/SKILL.md new file mode 100644 index 0000000..edc5c6c --- /dev/null +++ b/.agents/skills/shipyard-agent/SKILL.md @@ -0,0 +1,257 @@ +--- +name: shipyard-agent-conventions +description: Development conventions and patterns for shipyard-agent. TypeScript Express project with mixed commits. +--- + +# Shipyard Agent Conventions + +> Generated from [maxpetrusenko/shipyard-agent](https://github.com/maxpetrusenko/shipyard-agent) on 2026-03-23 + +## Overview + +This skill teaches Claude the development patterns and conventions used in shipyard-agent. + +## Tech Stack + +- **Primary Language**: TypeScript +- **Framework**: Express +- **Architecture**: type-based module organization +- **Test Location**: separate +- **Test Framework**: vitest + +## When to Use This Skill + +Activate this skill when: +- Making changes to this repository +- Adding new features following established patterns +- Writing tests that match project conventions +- Creating commits with proper message format + +## Commit Conventions + +Follow these commit message conventions based on 8 analyzed commits. + +### Commit Style: Mixed Style + +### Prefixes Used + +- `feat` +- `docs` +- `fix` +- `chore` + +### Message Guidelines + +- Average message length: ~53 characters +- Keep first line concise and descriptive +- Use imperative mood ("Add feature" not "Added feature") + + +*Commit message example* + +```text +feat: polish ship-agent to 10/10 — 13 targeted improvements +``` + +*Commit message example* + +```text +chore: gitignore AGENTS.md and CLAUDE.md +``` + +*Commit message example* + +```text +docs: add README, presearch, and agent documentation +``` + +*Commit message example* + +```text +fix: use npx tsx in bench.sh for reliable resolution +``` + +*Commit message example* + +```text +feat: standalone ship-agent with bench harness +``` + +*Commit message example* + +```text +docs: add critical test evidence and submission artifacts +``` + +*Commit message example* + +```text +fix: return 401 for invalid firebase bearer tokens +``` + +*Commit message example* + +```text +feat: stabilize board drag sync and add e2e test harness +``` + +## Architecture + +### Project Structure: Single Package + +This project uses **type-based** module organization. + +### Source Layout + +``` +src/ +├── config/ +├── context/ +├── graph/ +├── multi-agent/ +├── runtime/ +├── server/ +├── tools/ +``` + +### Entry Points + +- `src/app.ts` +- `src/index.ts` + +### Configuration Files + +- `mvp-1-collab-board/app/eslint.config.js` +- `mvp-1-collab-board/app/package.json` +- `mvp-1-collab-board/app/playwright.config.ts` +- `mvp-1-collab-board/app/tsconfig.json` +- `mvp-1-collab-board/app/vite.config.ts` +- `mvp-1-collab-board/functions/package.json` +- `package.json` +- `tsconfig.json` +- `vitest.config.ts` + +### Guidelines + +- Group code by type (components, services, utils) +- Keep related functionality in the same type folder +- Avoid circular dependencies between type folders + +## Code Style + +### Language: TypeScript + +### Naming Conventions + +| Element | Convention | +|---------|------------| +| Files | camelCase | +| Functions | camelCase | +| Classes | PascalCase | +| Constants | SCREAMING_SNAKE_CASE | + +### Import Style: Mixed Style + +### Export Style: Named Exports + + +*Preferred export style* + +```typescript +// Use named exports +export function calculateTotal() { ... } +export const TAX_RATE = 0.1 +export interface Order { ... } +``` + +## Testing + +### Test Framework: vitest + +### File Pattern: `*.test.ts` + +### Test Types + +- **Unit tests**: Test individual functions and components in isolation +- **E2e tests**: Test complete user flows through the application + + +*Test file structure* + +```typescript +import { describe, it, expect } from 'vitest' + +describe('MyFunction', () => { + it('should return expected result', () => { + const result = myFunction(input) + expect(result).toBe(expected) + }) +}) +``` + +## Error Handling + +### Error Handling Style: Try-Catch Blocks + + +*Standard error handling pattern* + +```typescript +try { + const result = await riskyOperation() + return result +} catch (error) { + console.error('Operation failed:', error) + throw new Error('User-friendly message') +} +``` + +## Common Workflows + +These workflows were detected from analyzing commit patterns. + +### Feature Development + +Standard feature implementation workflow + +**Frequency**: ~16 times per month + +**Steps**: +1. Add feature implementation +2. Add tests for feature +3. Update documentation + +**Files typically involved**: +- `mvp-1-collab-board/app/src/components/*` +- `mvp-1-collab-board/app/src/firebase/*` +- `mvp-1-collab-board/app/src/pages/*` +- `**/*.test.*` +- `**/api/**` + +**Example commit sequence**: +``` +Add planning docs and decision log from CollabBoard requirements +Close requirements gaps and map tasks to Linear tickets +Revert AGENTS and add submission PDF package +``` + + +## Best Practices + +Based on analysis of the codebase, follow these practices: + +### Do + +- Write tests using vitest +- Follow *.test.ts naming pattern +- Use camelCase for file names +- Prefer named exports + +### Don't + +- Don't skip tests for new features +- Don't deviate from established patterns without discussion + +--- + +*This skill was auto-generated by [ECC Tools](https://ecc.tools). Review and customize as needed for your team.* From 4a3840ff7f49bf14d0708afade2fe13b5ef2e382 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 20:27:15 +0000 Subject: [PATCH 04/12] feat: add shipyard-agent ECC bundle (.agents/skills/shipyard-agent/agents/openai.yaml) --- .agents/skills/shipyard-agent/agents/openai.yaml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .agents/skills/shipyard-agent/agents/openai.yaml diff --git a/.agents/skills/shipyard-agent/agents/openai.yaml b/.agents/skills/shipyard-agent/agents/openai.yaml new file mode 100644 index 0000000..1f2dde6 --- /dev/null +++ b/.agents/skills/shipyard-agent/agents/openai.yaml @@ -0,0 +1,6 @@ +interface: + display_name: "Shipyard Agent" + short_description: "Repo-specific patterns and workflows for shipyard-agent" + default_prompt: "Use the shipyard-agent repo skill to follow existing architecture, testing, and workflow conventions." +policy: + allow_implicit_invocation: true \ No newline at end of file From d88eca55528f1ac63f27cf19de95c4e92b3b0b06 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 20:27:16 +0000 Subject: [PATCH 05/12] feat: add shipyard-agent ECC bundle (.claude/identity.json) --- .claude/identity.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .claude/identity.json diff --git a/.claude/identity.json b/.claude/identity.json new file mode 100644 index 0000000..ae6897b --- /dev/null +++ b/.claude/identity.json @@ -0,0 +1,15 @@ +{ + "version": "2.0", + "technicalLevel": "technical", + "preferredStyle": { + "verbosity": "detailed", + "codeComments": false, + "explanations": false + }, + "domains": [ + "typescript", + "express" + ], + "suggestedBy": "ecc-tools-repo-analysis", + "createdAt": "2026-03-23T20:27:12.000Z" +} \ No newline at end of file From a26f7e5e77f5b6466585c5b1cad4ebed2dc8f354 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 20:27:16 +0000 Subject: [PATCH 06/12] feat: add shipyard-agent 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 fbbbc85265363a1a8f0c17f7c810a70fcd95f061 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 20:27:18 +0000 Subject: [PATCH 07/12] feat: add shipyard-agent 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..0e68656 --- /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/shipyard-agent/SKILL.md` +- Claude-facing companion skill: `.claude/skills/shipyard-agent/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 + +- `.claude/commands/feature-development.md` + +Use these workflow files as reusable task scaffolds when the detected repository workflows recur. \ No newline at end of file From 50e2b6a0865fe107283290a60f40828ca34b8dd0 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 20:27:18 +0000 Subject: [PATCH 08/12] feat: add shipyard-agent 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 f94f2bc5e8985ccb3de8e846f989c7057490ea6e Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 20:27:19 +0000 Subject: [PATCH 09/12] feat: add shipyard-agent 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 b0c05a8646bfde891afdbe2c1cdb73dc59336d43 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 20:27:20 +0000 Subject: [PATCH 10/12] feat: add shipyard-agent 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 426ef8b84cf290d97cdaf417cfbe3228682860a8 Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 20:27:21 +0000 Subject: [PATCH 11/12] feat: add shipyard-agent ECC bundle (.claude/homunculus/instincts/inherited/shipyard-agent-instincts.yaml) --- .../inherited/shipyard-agent-instincts.yaml | 188 ++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 .claude/homunculus/instincts/inherited/shipyard-agent-instincts.yaml diff --git a/.claude/homunculus/instincts/inherited/shipyard-agent-instincts.yaml b/.claude/homunculus/instincts/inherited/shipyard-agent-instincts.yaml new file mode 100644 index 0000000..3521b77 --- /dev/null +++ b/.claude/homunculus/instincts/inherited/shipyard-agent-instincts.yaml @@ -0,0 +1,188 @@ +# Instincts generated from https://github.com/maxpetrusenko/shipyard-agent +# Generated: 2026-03-23T20:27:12.000Z +# Version: 2.0 + +--- +id: shipyard-agent-commit-length +trigger: "when writing a commit message" +confidence: 0.6 +domain: git +source: repo-analysis +source_repo: https://github.com/maxpetrusenko/shipyard-agent +--- + +# Shipyard Agent Commit Length + +## Action + +Write moderate-length commit messages (~50 characters) + +## Evidence + +- Average commit message length: 53 chars +- Based on 17 commits + +--- +id: shipyard-agent-naming-files +trigger: "when creating a new file" +confidence: 0.8 +domain: code-style +source: repo-analysis +source_repo: https://github.com/maxpetrusenko/shipyard-agent +--- + +# Shipyard Agent Naming Files + +## Action + +Use camelCase naming convention + +## Evidence + +- Analyzed file naming patterns in repository +- Dominant pattern: camelCase + +--- +id: shipyard-agent-export-style +trigger: "when exporting from a module" +confidence: 0.7 +domain: code-style +source: repo-analysis +source_repo: https://github.com/maxpetrusenko/shipyard-agent +--- + +# Shipyard Agent Export Style + +## Action + +Prefer named exports + +## Evidence + +- Export pattern analysis +- Dominant style: named + +--- +id: shipyard-agent-arch-type-based +trigger: "when adding new code" +confidence: 0.8 +domain: architecture +source: repo-analysis +source_repo: https://github.com/maxpetrusenko/shipyard-agent +--- + +# Shipyard Agent Arch Type Based + +## Action + +Place code in the appropriate type folder (components/, services/, utils/, etc.) + +## Evidence + +- Type-based module organization detected +- Folders: config, context, graph, multi-agent, runtime + +--- +id: shipyard-agent-test-separate +trigger: "when writing tests" +confidence: 0.8 +domain: testing +source: repo-analysis +source_repo: https://github.com/maxpetrusenko/shipyard-agent +--- + +# Shipyard Agent 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: shipyard-agent-test-framework +trigger: "when writing tests" +confidence: 0.9 +domain: testing +source: repo-analysis +source_repo: https://github.com/maxpetrusenko/shipyard-agent +--- + +# Shipyard Agent Test Framework + +## Action + +Use vitest as the test framework + +## Evidence + +- Test framework detected: vitest +- File pattern: *.test.ts + +--- +id: shipyard-agent-test-naming +trigger: "when creating a test file" +confidence: 0.85 +domain: testing +source: repo-analysis +source_repo: https://github.com/maxpetrusenko/shipyard-agent +--- + +# Shipyard Agent Test Naming + +## Action + +Name test files using the pattern: *.test.ts + +## Evidence + +- File pattern: *.test.ts +- Consistent across test files + +--- +id: shipyard-agent-test-types +trigger: "when planning tests for a feature" +confidence: 0.7 +domain: testing +source: repo-analysis +source_repo: https://github.com/maxpetrusenko/shipyard-agent +--- + +# Shipyard Agent Test Types + +## Action + +Write unit, e2e tests to match project standards + +## Evidence + +- Test types detected: unit, e2e +- Coverage config: no + +--- +id: shipyard-agent-workflow-feature-development +trigger: "when implementing a new feature" +confidence: 0.9 +domain: workflow +source: repo-analysis +source_repo: https://github.com/maxpetrusenko/shipyard-agent +--- + +# Shipyard Agent Workflow Feature Development + +## Action + +Follow the feature-development workflow: +1. Add feature implementation +2. Add tests for feature +3. Update documentation + +## Evidence + +- Workflow detected from commit patterns +- Frequency: ~16x per month +- Files: mvp-1-collab-board/app/src/components/*, mvp-1-collab-board/app/src/firebase/*, mvp-1-collab-board/app/src/pages/* + From 081342596edc3648a5dfd0e774d342a6c5db8b8e Mon Sep 17 00:00:00 2001 From: "ecc-tools[bot]" <257055122+ecc-tools[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 20:27:22 +0000 Subject: [PATCH 12/12] feat: add shipyard-agent ECC bundle (.claude/commands/feature-development.md) --- .claude/commands/feature-development.md | 39 +++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .claude/commands/feature-development.md diff --git a/.claude/commands/feature-development.md b/.claude/commands/feature-development.md new file mode 100644 index 0000000..4e305e3 --- /dev/null +++ b/.claude/commands/feature-development.md @@ -0,0 +1,39 @@ +--- +name: feature-development +description: Workflow command scaffold for feature-development in shipyard-agent. +allowed_tools: ["Bash", "Read", "Write", "Grep", "Glob"] +--- + +# /feature-development + +Use this workflow when working on **feature-development** in `shipyard-agent`. + +## Goal + +Standard feature implementation workflow + +## Common Files + +- `mvp-1-collab-board/app/src/components/*` +- `mvp-1-collab-board/app/src/firebase/*` +- `mvp-1-collab-board/app/src/pages/*` +- `**/*.test.*` +- `**/api/**` + +## Suggested Sequence + +1. Understand the current state and failure mode before editing. +2. Make the smallest coherent change that satisfies the workflow goal. +3. Run the most relevant verification for touched files. +4. Summarize what changed and what still needs review. + +## Typical Commit Signals + +- Add feature implementation +- Add tests for feature +- Update documentation + +## Notes + +- Treat this as a scaffold, not a hard-coded script. +- Update the command if the workflow evolves materially. \ No newline at end of file