From f8f64a5daac21e9f73e9310f472486e34a81c3ff Mon Sep 17 00:00:00 2001 From: darrenhinde <107584450+darrenhinde@users.noreply.github.com> Date: Wed, 26 Nov 2025 22:02:04 +0000 Subject: [PATCH] feat(commands): add smart commit command for opencode-agents repository --- .opencode/command/commit-openagents.md | 266 +++++++++++++++++++++++++ 1 file changed, 266 insertions(+) create mode 100644 .opencode/command/commit-openagents.md diff --git a/.opencode/command/commit-openagents.md b/.opencode/command/commit-openagents.md new file mode 100644 index 0000000..e98220d --- /dev/null +++ b/.opencode/command/commit-openagents.md @@ -0,0 +1,266 @@ +--- +description: Smart commit command for opencode-agents repository with automatic validation and conventional commits +--- + +# Commit OpenAgents Command + +You are an AI agent that helps create well-formatted git commits specifically for the **opencode-agents** repository. This command handles the complete commit workflow including validation, testing, and pushing changes. + +## Instructions for Agent + +When the user runs this command, execute the following workflow: + +### 1. **Pre-Commit Validation** +Run these checks in parallel: +```bash +npm run test:openagent -- --smoke +npm run test:opencoder -- --smoke +git status --porcelain +git diff --cached +``` + +**Validation Rules:** +- ✅ Smoke tests must pass for both agents +- ✅ Check for uncommitted changes +- ⚠️ If tests fail, ask user if they want to proceed or fix issues first + +### 2. **Analyze Changes** +- Run `git status` to see all untracked files +- Run `git diff` to see both staged and unstaged changes +- Run `git log --oneline -5` to see recent commit style +- Identify the scope of changes (evals, scripts, docs, agents, etc.) + +### 3. **Stage Files Intelligently** +**Auto-stage based on change type:** +- If modifying evals framework → stage `evals/framework/` +- If modifying agent configs → stage `.opencode/agent/` +- If modifying scripts → stage `scripts/` +- If modifying docs → stage `docs/` +- If modifying CI/CD → stage `.github/workflows/` +- If user provides specific files → stage only those + +**Never auto-stage:** +- `node_modules/` +- `.env` files +- `test_tmp/` or temporary directories +- `evals/results/` (test results) + +### 4. **Generate Commit Message** + +**Follow Conventional Commits (NO EMOJIS):** +``` +(): + +[optional body] +``` + +**Types for this repo:** +- `feat` - New features (agents, commands, tools) +- `fix` - Bug fixes +- `refactor` - Code restructuring without behavior change +- `test` - Test additions or modifications +- `docs` - Documentation updates +- `chore` - Maintenance tasks (dependencies, cleanup) +- `ci` - CI/CD pipeline changes +- `perf` - Performance improvements + +**Scopes for this repo:** +- `evals` - Evaluation framework changes +- `agents` - Agent configuration changes (openagent, opencoder) +- `subagents` - Subagent changes (task-manager, coder, tester, etc.) +- `commands` - Slash command changes +- `context` - Context file changes +- `scripts` - Build/test script changes +- `ci` - GitHub Actions workflow changes +- `docs` - Documentation changes + +**Examples:** +``` +feat(evals): add parallel test execution support +fix(agents): correct delegation logic in openagent +refactor(evals): split test-runner into modular components +test(evals): add smoke tests for openagent +docs(readme): update installation instructions +chore(deps): upgrade evaluation framework dependencies +ci: add automatic version bumping workflow +``` + +### 5. **Commit Analysis** + + +- List all files that have been changed or added +- Summarize the nature of changes (new feature, bug fix, refactor, etc.) +- Identify the primary scope (evals, agents, scripts, etc.) +- Determine the purpose/motivation behind changes +- Assess impact on the overall project +- Check for sensitive information (API keys, tokens, etc.) +- Draft a concise commit message focusing on "why" not "what" +- Ensure message follows conventional commit format +- Verify message is specific and not generic + + +### 6. **Execute Commit** +```bash +git add +git commit -m "(): " +git status # Verify commit succeeded +``` + +### 7. **Post-Commit Actions** + +**Ask user:** +``` +✅ Commit created: +📝 Message: + +Would you like to: +1. Push to remote (git push origin main) +2. Create another commit +3. Done +``` + +**If user chooses push:** +```bash +git push origin main +``` + +**Then inform:** +``` +🚀 Pushed to remote! + +This will trigger: +- GitHub Actions CI/CD workflow +- Smoke tests for openagent & opencoder +- Automatic version bumping (if feat/fix commit) +- CHANGELOG.md update +``` + +## Repository-Specific Rules + +### Version Bumping (Automatic via CI/CD) +Commits trigger automatic version bumps: +- `feat:` → minor bump (v0.1.0 → v0.2.0) +- `fix:` → patch bump (v0.1.0 → v0.1.1) +- `feat!:` or `BREAKING CHANGE:` → major bump (v0.1.0 → v1.0.0) +- `[alpha]` in message → alpha bump (v0.1.0-alpha.1 → v0.1.0-alpha.2) +- Default → minor bump + +### Files to Always Check +Before committing, verify these are in sync: +- `VERSION` file +- `package.json` version +- `CHANGELOG.md` (if manually updated) + +### Pre-Commit Hooks +This repo may have pre-commit hooks that: +- Run linting +- Format code +- Run type checks + +**If hooks modify files:** +- Automatically amend the commit to include hook changes +- Inform user that files were auto-formatted + +## Error Handling + +### If Smoke Tests Fail +``` +⚠️ Smoke tests failed for + +Failures: + + +Options: +1. Fix issues and retry +2. Run full test suite (npm run test:) +3. Proceed anyway (not recommended) +4. Cancel commit + +What would you like to do? +``` + +### If No Changes Detected +``` +ℹ️ No changes to commit. Working tree is clean. + +Recent commits: + + +Would you like to: +1. Check git status +2. View recent commits +3. Exit +``` + +### If Merge Conflicts +``` +⚠️ Merge conflicts detected. Please resolve conflicts first. + +Conflicted files: + + +Run: git status +``` + +## Agent Behavior Notes + +- **Never commit without validation** - Always run smoke tests first +- **Smart staging** - Only stage relevant files based on change scope +- **Conventional commits** - Strictly follow conventional commit format (NO EMOJIS) +- **Scope awareness** - Use appropriate scope for this repository +- **Version awareness** - Inform user about automatic version bumping +- **CI/CD awareness** - Remind user that push triggers automated workflows +- **Security** - Never commit sensitive information (API keys, tokens, .env files) +- **Atomic commits** - Each commit should have a single, clear purpose +- **Push guidance** - Always ask before pushing to remote + +## Quick Reference + +### Common Workflows + +**Feature Addition:** +```bash +# 1. Run smoke tests +npm run test:openagent -- --smoke +npm run test:opencoder -- --smoke + +# 2. Stage and commit +git add +git commit -m "feat(evals): add new evaluation metric" + +# 3. Push +git push origin main +``` + +**Bug Fix:** +```bash +git add +git commit -m "fix(agents): correct delegation threshold logic" +git push origin main +``` + +**Documentation:** +```bash +git add docs/ +git commit -m "docs(guides): update testing documentation" +git push origin main +``` + +**Refactoring:** +```bash +git add evals/framework/src/ +git commit -m "refactor(evals): extract validation logic into separate module" +git push origin main +``` + +## Success Criteria + +A successful commit should: +- ✅ Pass smoke tests for both agents +- ✅ Follow conventional commit format +- ✅ Have appropriate scope +- ✅ Be atomic (single purpose) +- ✅ Have clear, concise message +- ✅ Not include sensitive information +- ✅ Not include generated files (node_modules, build artifacts) +- ✅ Trigger appropriate CI/CD workflows when pushed