plugins/ subtree created from scratch (no dappcore-go/dappcore-php
existed to rename). Per docs/RFC-AGENT-PLUGIN-RESTRUCTURE.md:
plugins/core-go/:
- .claude-plugin/plugin.json (name: core-go)
- README.md, marketplace.yaml, .mcp.json (calls core mcp serve)
- commands/{commit,qa,review,verify}.md
- skills/{core,core-go,go-agent}/SKILL.md (seeded from existing repo material)
- skills/api-endpoints/SKILL.md (NEW per ticket)
- agents/go-developer.md
- hook scripts referenced by commands
plugins/core-php/: same structure, php-developer agent + php-specific
api-endpoints skill.
plugins/infra/: plugin.json, README.md, marketplace.yaml, agents/infra-ops.md.
Manifests use core-* not dappcore-*. .mcp.json files call core mcp serve.
No dappcore-* names left.
Note: seed skills copied from existing repo material per ticket spec —
some upstream Host UK examples remain in copied skill docs. Future PR
can purge those if Host UK references are out of scope for the public
plugin marketplace.
Co-authored-by: Codex <noreply@openai.com>
Closes tasks.lthn.sh/view.php?id=234
28 lines
770 B
Bash
Executable file
28 lines
770 B
Bash
Executable file
#!/bin/bash
|
|
# Verify QA passes before stopping during /core-go:qa mode.
|
|
|
|
read -r input
|
|
STOP_ACTIVE=$(echo "$input" | jq -r '.stop_hook_active // false')
|
|
|
|
# Prevent infinite loop
|
|
if [ "$STOP_ACTIVE" = "true" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
# Run Go QA for this plugin family.
|
|
RESULT=$(core go qa 2>&1) || true
|
|
|
|
# Check if QA passed
|
|
if echo "$RESULT" | grep -qE "FAIL|ERROR|✗|panic:|undefined:"; then
|
|
ISSUES=$(echo "$RESULT" | grep -E "^(FAIL|ERROR|✗|undefined:|panic:)|^[a-zA-Z0-9_/.-]+\.go:[0-9]+:" | head -5)
|
|
ISSUES_ESCAPED=$(echo "$ISSUES" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | sed ':a;N;$!ba;s/\n/\\n/g')
|
|
|
|
cat << EOF
|
|
{
|
|
"decision": "block",
|
|
"reason": "QA still has issues:\n\n$ISSUES_ESCAPED\n\nPlease fix these before stopping."
|
|
}
|
|
EOF
|
|
else
|
|
exit 0
|
|
fi
|