A collection of prompts used in my daily work
Overview
A collection of agents and skills used in my daily work Use install-agents-skills.sh to install the agents and skills in this repo into a workspace or your user profile for (VS Code), , and/or : - : user | workspace - : copilot | opencode | claude | all - Options: --project (workspace), --scope agents|skills|all, --force, --dry-run Agents and skills are into place (never copied), so the repo remains the source of truth — git pull here updates every installed agent and skill automatically. Targets already linked to this repo are left alone; use --force to replace an existing target (e.g. a file copied by an earlier version) with a link. Source folders (linked whole): copilot-agents/, opencode-agents/, claude-agents/ for agents; skills/ for skills. Opencode-format copies of the agents in claude-agents/. Each file uses native frontmatter per the V2 agents guide — no V1 fields (permission, tools, name, prompt, maxSteps) remain. This folder is symlinked as a whole into .
README
gg-daily-workbench
A collection of agents and skills used in my daily work
Installing agents & skills
Use install-agents-skills.sh to install the
agents and skills in this repo into a workspace or your user profile for
Copilot (VS Code), OpenCode, and/or Claude Code:
./install-agents-skills.sh [options]
# Install everything for all three tools into your user profile
./install-agents-skills.sh user all
# Install claude agents + skills into a specific project
./install-agents-skills.sh workspace claude --project ~/work/my-app
# Preview what would happen without changing anything
./install-agents-skills.sh user all --dry-run
- ``:
user|workspace - ``:
copilot|opencode|claude|all - Options:
--project(workspace),--scope agents|skills|all,--force,--dry-run
Agents and skills are symlinked as whole folders into place (never copied),
so the repo remains the source of truth — git pull here updates every
installed agent and skill automatically. Targets already linked to this repo
are left alone; use --force to replace an existing target (e.g. a file copied
by an earlier version) with a link.
Source folders (linked whole): copilot-agents/, opencode-agents/,
claude-agents/ for agents; skills/ for skills.
opencode-agents
Opencode-format copies of the agents in claude-agents/.
Each file uses native OpenCode V2 frontmatter per the
V2 agents guide — no V1 fields
(permission, tools, name, prompt, maxSteps) remain.
This folder is symlinked as a whole into
.opencode/agents(or~/.config/opencode/agents) byinstall-agents-skills.sh, so it must contain only agent files — that is why this documentation lives here rather than as aREADME.mdinside the folder.
Files
| Agent | Purpose | Applies skill(s) |
|---|---|---|
algorithm-assistant.md |
Primary — conversational algorithm design assistant that clarifies, explores cases, brainstorms, explains, and designs algorithms bilingually | design-algorithm |
blog-assistant.md |
Primary — conversational blog-writing assistant that gathers ideas, fills gaps, and maintains the article document | write-blog |
english-corrector.md |
Primary — corrects English grammar, spelling, punctuation, and style while preserving meaning, tone, and format | correct-english |
translator.md |
Primary — translates text and Markdown blog posts between English and Chinese, preserving formatting and adapting idiom | translate-en-cn |
user-story-writer.md |
Primary — conversational user-story writer that drafts, refines, and updates user stories (incl. Jira/Azure DevOps) | draft-user-story |
prompt-engineer.md |
Primary — crafts and refines effective prompts and agent files by applying the SKR framework | craft-prompt |
skill-creator.md |
Primary — creates, edits, and reviews skills (SKILL.md) by applying the create-skill / review-skill workflows | create-skill, review-skill |
adr-writer.md |
Draft Architecture Decision Records | draft-adr |
code-investigator.md |
Primary — read-only codebase investigation | investigate-code |
code-reviewer.md |
Primary — read-only code review | review-code |
executor.md |
Execute an existing plan (never plans) | execute-plan |
learner.md |
Extract knowledge from history (self-dispatch for parallelism) | learn-from-history |
orchestrate-delivery.md |
Primary — delivery orchestrator that dispatches the plan/execute/spike/ADR/solution-doc sub-agents and tracks the delivery index | orchestrate-feature-delivery |
planner.md |
Produce + persist a TDD plan (never executes) | plan-development-task, investigate-code |
findings-doc-writer.md |
Compile question-style findings docs (resource index, topic blocks, file:line evidence ledger) |
document-findings |
solution-doc-writer.md |
Compile solution documents (C4, sequence, RAID/RACI) | write-solution-doc |
spike-conductor.md |
Primary — orchestrate spike investigations + verify sub-agent results | conduct-spike, question-everything |
svg-assistant.md |
Create, edit, and upgrade PPT-quality SVG diagrams | edit-svg |
Opencode V2 agent contract (summary)
- One markdown file per agent; the filename becomes the agent ID (e.g.
code-reviewer.md→code-reviewer). There is noname:field. descriptionexplains the purpose; opencode shows it to the model choosing a subagent.mode:primary|subagent|all— V2 defaults a new custom agent toprimary.algorithm-assistant.md,blog-assistant.md,english-corrector.md,orchestrate-delivery.md,prompt-engineer.md,skill-creator.md,translator.md, anduser-story-writer.mdareprimary;code-investigator.md,code-reviewer.md, andspike-conductor.mdareall(usable as primary or dispatched);adr-writer.md,executor.md,findings-doc-writer.md,learner.md,planner.md,solution-doc-writer.md, andsvg-assistant.mdaresubagent(dispatch targets only).permissionsis an ordered list of{ action, resource, effect }rules; the last matching rule wins, so broad rules precede exceptions.- Action names are V2 strings:
read,edit,glob,grep,shell,subagent,skill,question,webfetch,websearch,external_directory, MCP tools.bash,task,write,patchare V1 names;list,lsp, andtodowriteare not V2 permission actions. - The markdown body is the agent’s system prompt.
Permission rules in these files
Each agent declares its tool set explicitly — read, glob, grep, edit, shell, webfetch, websearch, skill, and subagent — so the frontmatter states the agent’s access instead of leaving it to inherited defaults:
| Agent pattern | Rules |
|---|---|
Doc-only writers — adr-writer, findings-doc-writer, planner, solution-doc-writer |
edit * deny, then edit *.md allow; everything else allowed |
Read-only — code-investigator, code-reviewer |
edit * deny; discovery, shell, web, skills allowed |
Text-only — english-corrector, translator |
edit *, shell *, webfetch *, websearch * denied; discovery and skills allowed |
Folder-scoped writers — orchestrate-delivery (deliveries), spike-conductor (spikes) |
edit * deny, then edit */deliveries/* allow (V1 **/deliveries/** translated literally; same for spikes) |
Dispatch-restricted — orchestrate-delivery, spike-conductor |
subagent * deny, then one subagent allow per target |
| Web search off — six writing/authoring agents | websearch * deny |
Full access — executor, learner |
every action above allowed; learner also allows subagent for self-dispatch |
-
Per V2’s base policy, actions not listed (
question,external_directory, Code Mode’sexecute, MCP tools) remain allowed. -
Every rule carries
resource: "*". V2 requires all three fields and the patterns are whole-value wildcards, so"*"means “every path, query, or agent ID”. -
Agent rules are appended after global rules, so an explicit
allowhere also wins over a stricter globalask— the same precedence the V1permissionmap had. Narrow a rule in the file, not only inopencode.jsonc, when an agent must be restricted. -
todowriteandlspare gone: V2 has neither as a permission action, and todos are off unlessexperimental.todo: trueis set inopencode.jsonc. -
V2 allows
external_directoryby default; add{ action: "external_directory", resource: "*", effect: "ask" }globally to restore the V1 prompt.
How the conversion was done
- Claude frontmatter (
name:/tools:/model: inherit) → opencodemode:+permissions:; the Claude tool list maps to V2 actions:Glob/Grep/Read→glob/grep/read,Write/Edit→edit,Bash/KillShell/BashOutput→shell,WebFetch→webfetch,WebSearch→websearch, skill tool →skill. - V1 → V2:
permission:map → orderedpermissions:list;bash→shell;task→subagent;write/patch→edit;list,lsp,todowritedropped. - Every V1
allow/denyis carried over 1:1, includingexecutorandlearner, which previously listed no tools and now spell out their set (from theirclaude-agents/tool list and prior behavior). - V1 path globs translate literally, one rule per V1 pattern:
"*": deny+"*.md": allow, and**/deliveries/**→*/deliveries/*(both*s collapse to the same “any characters” wildcard). Every file is an exact permission translation — verified rule by rule againstgit show HEAD. - Because V2 resolves in-project write paths as Location-relative,
*/deliveries/*does not matchdeliveries//index.mdwhen the artifact base is the project root. That reproduces V1’s behavior; to allow it, add{ action: "edit", resource: "deliveries/*", effect: "allow" }(after the deny) toorchestrate-delivery.md. - Claude paths → opencode:
CLAUDE.md→AGENTS.md,.claude/agents/→.opencode/agents/,.claude/skills/→.opencode/skills/,.claude/rules/→ project instructions.
Notes
- Skills must be discoverable by opencode (
.opencode/skills//SKILL.md,.claude/skills/,.agents/skills/, or the matching global locations) for theskilltool to load them. - Subagent dispatch tables (in
spike-conductor.mdandlearner.md) reference agents by name — those names resolve to the other files in this folder once installed. - Every agent in
opencode-agents/andclaude-agents/loads project context from both toolchains via load-project-context: instructions (AGENTS.md,CLAUDE.md), agents, skills, rules, and commands under.opencode/and.claude/, plus.agents/skills/. The path mapping above applies to frontmatter and the agent’s own defaults, not to context discovery — a project set up for either tool wins over conflicting agent defaults.
Agent dispatch per platform
An agent that dispatches sub-agents must declare the capability in its frontmatter, or the dispatch silently fails on that platform:
| Platform | Mechanism | Declaration |
|---|---|---|
| opencode | subagent permission allowlist |
{ action: "subagent", resource: "*", effect: "deny" } then { action: "subagent", resource: "", effect: "allow" } |
| Claude Code | Task tool (renamed Agent; Task remains an alias) |
include Task (or Agent) in the comma-separated tools: list |
| VS Code Copilot | agents list + the agent tool |
agents: ['planner', ...] (omit tools to keep all tools) |
Dispatching agents and their targets:
| Agent | Dispatches |
|---|---|
orchestrate-delivery |
code-investigator, planner, executor, code-reviewer, spike-conductor, adr-writer, solution-doc-writer |
spike-conductor |
code-investigator, findings-doc-writer, adr-writer, solution-doc-writer |
learner |
learner (self-dispatch) |
code-reviewer |
code-reviewer (fan-out) |
code-investigator |
code-investigator (fan-out) |
- Self-dispatch / fan-out: opencode and Claude allow an agent to invoke itself; a V2
subagent *deny blocks it, so self-dispatching agents must allow their own ID. VS Code Copilot requires thechat.subagents.allowInvocationsFromSubagentssetting for a self-referentialagentsentry. - opencode V2 allows unspecified actions by default; explicit
subagentallowlists exist only where dispatch is restricted (orchestrate-delivery,spike-conductor).
Skill self-containment
Every skill is installable on its own: each markdown link resolves inside its own skill folder, and another skill is named, never deep-linked. Doctrine that several skills need is duplicated as a scoped local slice, not shared by path.
“Skill doctrine registry” maps each doctrine to its owning copy and every mirror, so a change knows what to propagate.
# No link may leave its skill folder
python3 skills/review-skill/scripts/check_skill_links.py skills
# Same basename in several skills — a `differ` row is a slice to check against the registry
python3 skills/review-skill/scripts/check_skill_links.py --duplicates skills
Recommended Tools
Try a different keyword or remove a filter.
Install
npx skillfish add sjmyuan/gg-daily-workbench