agents: caller-provided skills hook — repos can ship their own opencode skills
A consuming repo can now add repo-specific skills under .gitea/agent-skills/<name>/ (SKILL.md + skill.json + optional setup.sh); the framework installs the ones allowed for the running agent. This keeps deploy-target / infra specifics in the repo they belong to instead of hardcoded in the shared workflow. - install-caller-skills.sh: scans the caller workspace, installs each skill whose skill.json `agents` list includes the running agent, runs its optional setup.sh with all inherited secrets available as $SECRETS_JSON (toJSON(secrets) — so a caller's setup can read repo-specific secret names the framework can't know), and merges the allowed skills into the permission.skill allow-list. - agent.yml: replace the hardcoded node1-ssh step with the generic caller-skills step (passes NAME, WORKSPACE, SECRETS_JSON). - Remove the built-in node1-ssh skill: delete skill-node1-ssh.sh, drop "node1-ssh" from agents.json (senior/lead). The homelab repo now owns that skill. - run-agent.sh: note caller-provided skills aren't in the roster (route them via the caller's AGENTS.md). toJSON(secrets) verified supported on this Gitea (1.27) via an isolated probe. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
63dbd2727f
commit
0f8893330f
@@ -1,8 +1,54 @@
|
||||
{
|
||||
"pm": {"model":"ollama-cloud/gemma4:cloud","vision":true, "mode":"comment","skills":["gitea-api"],"desc":"Product manager — research, plan, ask clarifying questions, and decide which dev should do the work. Comments only; never edits files."},
|
||||
"junior": {"model":"ollama-cloud/kimi-k2.7-code:cloud","vision":false,"mode":"pr", "skills":[],"desc":"Junior dev — small, low-risk changes (mostly YAML/compose/config). Text-only, cannot read images. Defers complex or image tasks to @senior or @lead."},
|
||||
"senior": {"model":"ollama-cloud/glm-5.2:cloud","vision":false,"mode":"pr", "skills":["gitea-api","node1-ssh"],"desc":"Senior dev — complex, multi-file implementation (GLM-5.2 via Ollama Cloud, text-only)."},
|
||||
"lead": {"model":"anthropic/claude-opus-4-8","vision":true, "mode":"pr", "skills":["gitea-api","node1-ssh"],"desc":"Tech lead — the hardest problems, architecture, and final calls."},
|
||||
"qa": {"model":"ollama-cloud/minimax-m3:cloud","vision":true, "mode":"comment","skills":["gitea-api"],"desc":"QA — verifies things work. Drives a headless browser (Playwright) to open a URL/web app, click through it, screenshot, and report bugs or confirm behavior. Comments findings; opens no PRs."},
|
||||
"ops": {"model":"anthropic/claude-opus-4-8","vision":false,"mode":"comment","skills":["gitea-admin"],"desc":"Gitea operator — administers the Gitea instance itself: create orgs/users/repos, manage labels and secrets, mint scoped per-user tokens, bootstrap new repos with the agent caller. Comments only; never edits code. ALWAYS confirms before any destructive action (delete user/repo/org)."}
|
||||
}
|
||||
"pm": {
|
||||
"model": "ollama-cloud/gemma4:cloud",
|
||||
"vision": true,
|
||||
"mode": "comment",
|
||||
"skills": [
|
||||
"gitea-api"
|
||||
],
|
||||
"desc": "Product manager — research, plan, ask clarifying questions, and decide which dev should do the work. Comments only; never edits files."
|
||||
},
|
||||
"junior": {
|
||||
"model": "ollama-cloud/kimi-k2.7-code:cloud",
|
||||
"vision": false,
|
||||
"mode": "pr",
|
||||
"skills": [],
|
||||
"desc": "Junior dev — small, low-risk changes (mostly YAML/compose/config). Text-only, cannot read images. Defers complex or image tasks to @senior or @lead."
|
||||
},
|
||||
"senior": {
|
||||
"model": "ollama-cloud/glm-5.2:cloud",
|
||||
"vision": false,
|
||||
"mode": "pr",
|
||||
"skills": [
|
||||
"gitea-api"
|
||||
],
|
||||
"desc": "Senior dev — complex, multi-file implementation (GLM-5.2 via Ollama Cloud, text-only)."
|
||||
},
|
||||
"lead": {
|
||||
"model": "anthropic/claude-opus-4-8",
|
||||
"vision": true,
|
||||
"mode": "pr",
|
||||
"skills": [
|
||||
"gitea-api"
|
||||
],
|
||||
"desc": "Tech lead — the hardest problems, architecture, and final calls."
|
||||
},
|
||||
"qa": {
|
||||
"model": "ollama-cloud/minimax-m3:cloud",
|
||||
"vision": true,
|
||||
"mode": "comment",
|
||||
"skills": [
|
||||
"gitea-api"
|
||||
],
|
||||
"desc": "QA — verifies things work. Drives a headless browser (Playwright) to open a URL/web app, click through it, screenshot, and report bugs or confirm behavior. Comments findings; opens no PRs."
|
||||
},
|
||||
"ops": {
|
||||
"model": "anthropic/claude-opus-4-8",
|
||||
"vision": false,
|
||||
"mode": "comment",
|
||||
"skills": [
|
||||
"gitea-admin"
|
||||
],
|
||||
"desc": "Gitea operator — administers the Gitea instance itself: create orgs/users/repos, manage labels and secrets, mint scoped per-user tokens, bootstrap new repos with the agent caller. Comments only; never edits code. ALWAYS confirms before any destructive action (delete user/repo/org)."
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user