mirror of
https://github.com/cexll/myclaude.git
synced 2026-02-05 02:30:26 +08:00
## Overview Complete implementation of enterprise-level workflow features including multi-backend execution (Codex/Claude/Gemini), GitHub issue-to-PR automation, hooks system, and comprehensive documentation. ## Major Changes ### 1. Multi-Backend Support (codeagent-wrapper) - Renamed codex-wrapper → codeagent-wrapper - Backend interface with Codex/Claude/Gemini implementations - Multi-format JSON stream parser (auto-detects backend) - CLI flag: --backend codex|claude|gemini (default: codex) - Test coverage: 89.2% **Files:** - codeagent-wrapper/backend.go - Backend interface - codeagent-wrapper/parser.go - Multi-format parser - codeagent-wrapper/config.go - CLI parsing with backend selection - codeagent-wrapper/executor.go - Process execution - codeagent-wrapper/logger.go - Async logging - codeagent-wrapper/utils.go - Utilities ### 2. GitHub Workflow Commands - /gh-create-issue - Create structured issues via guided dialogue - /gh-implement - Issue-to-PR automation with full dev lifecycle **Files:** - github-workflow/commands/gh-create-issue.md - github-workflow/commands/gh-implement.md - skills/codeagent/SKILL.md ### 3. Hooks System - UserPromptSubmit hook for skill activation - Pre-commit example with code quality checks - merge_json operation in install.py for settings.json merging **Files:** - hooks/skill-activation-prompt.sh|.js - hooks/pre-commit.sh - hooks/hooks-config.json - hooks/test-skill-activation.sh ### 4. Skills System - skill-rules.json for auto-activation - codeagent skill for multi-backend wrapper **Files:** - skills/skill-rules.json - skills/codeagent/SKILL.md - skills/codex/SKILL.md (updated) ### 5. Installation System - install.py: Added merge_json operation - config.json: Added "gh" module - config.schema.json: Added op_merge_json schema ### 6. CI/CD - GitHub Actions workflow for testing and building **Files:** - .github/workflows/ci.yml ### 7. Comprehensive Documentation - Architecture overview with ASCII diagrams - Codeagent-wrapper complete usage guide - GitHub workflow detailed examples - Hooks customization guide **Files:** - docs/architecture.md (21KB) - docs/CODEAGENT-WRAPPER.md (9KB) - docs/GITHUB-WORKFLOW.md (9KB) - docs/HOOKS.md (4KB) - docs/enterprise-workflow-ideas.md - README.md (updated with doc links) ## Test Results - All tests passing ✅ - Coverage: 89.2% - Security scan: 0 issues (gosec) ## Breaking Changes - codex-wrapper renamed to codeagent-wrapper - Default backend: codex (documented in README) ## Migration Guide Users with codex-wrapper installed should: 1. Run: python3 install.py --module dev --force 2. Update shell aliases if any 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
78 lines
1.8 KiB
Bash
Executable File
78 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Simple test runner for skill-activation-prompt hook.
|
|
# Each case feeds JSON to the hook and validates suggested skills.
|
|
|
|
set -uo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
HOOK_SCRIPT="$SCRIPT_DIR/skill-activation-prompt.sh"
|
|
|
|
parse_skills() {
|
|
node -e 'const data = JSON.parse(require("fs").readFileSync(0, "utf8")); const skills = (data.suggestedSkills || []).map(s => s.skill); console.log(skills.join(" "));'
|
|
}
|
|
|
|
run_case() {
|
|
local name="$1"
|
|
local input="$2"
|
|
shift 2
|
|
local expected=("$@")
|
|
|
|
local output skills
|
|
output="$("$HOOK_SCRIPT" <<<"$input")"
|
|
skills="$(printf "%s" "$output" | parse_skills)"
|
|
|
|
local pass=0
|
|
if [[ ${#expected[@]} -eq 1 && ${expected[0]} == "none" ]]; then
|
|
[[ -z "$skills" ]] && pass=1
|
|
else
|
|
pass=1
|
|
for need in "${expected[@]}"; do
|
|
if [[ " $skills " != *" $need "* ]]; then
|
|
pass=0
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if [[ $pass -eq 1 ]]; then
|
|
echo "PASS: $name"
|
|
else
|
|
echo "FAIL: $name"
|
|
echo " input: $input"
|
|
echo " expected skills: ${expected[*]}"
|
|
echo " actual skills: ${skills:-<empty>}"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
local status=0
|
|
|
|
run_case "keyword 'issue' => gh-workflow" \
|
|
'{"prompt":"Please open an issue for this bug"}' \
|
|
"gh-workflow" || status=1
|
|
|
|
run_case "keyword 'codex' => codex" \
|
|
'{"prompt":"codex please handle this change"}' \
|
|
"codex" || status=1
|
|
|
|
run_case "no matching keywords => none" \
|
|
'{"prompt":"Just saying hello"}' \
|
|
"none" || status=1
|
|
|
|
run_case "multiple keywords => codex & gh-workflow" \
|
|
'{"prompt":"codex refactor then open an issue"}' \
|
|
"codex" "gh-workflow" || status=1
|
|
|
|
if [[ $status -eq 0 ]]; then
|
|
echo "All tests passed."
|
|
else
|
|
echo "Some tests failed."
|
|
fi
|
|
|
|
exit "$status"
|
|
}
|
|
|
|
main "$@"
|