Copilot CLI · 13 min
“Make two options in an existing form default to on.”
- Taskfrontend-change-builder
+ frontend-quality-and-validation-evidence
- SkippedAnalysis · Independent review
Engineering control plane for AI coding agents
There is no fixed skill set. For each task, rd-skills composes the professional knowledge that task needs from 800 source files, finds the owning code, and validates after the final edit. An ordinary local change can finish right there — deeper analysis and independent review join only when a concrete question calls for them.
$ Payment callbacks sometimes create the same order twice. Find the cause and fix it.
$
Knowledge files
189 skills + 611 references, composed per task
Runtime skills
1 control + 25 professional at the host top level
JIT items
Loaded only behind the selected professional
Primary professional
Per assignment, always — ownership is never shared
Agent roles
Split by authority and tool boundary, not persona
Host adapters
Projected onto each host's real capabilities
Derived at build time from the upstream registry. None of these is a number of skills a task loads — they describe what a task can draw from.
Composed per task
Every assignment composes its own knowledge from 800 source files: one primary professional, the Layer 3 skills its selector authorises for this evidence, and only the references whose load conditions fire. Here is the same installation on two real tasks.
Copilot CLI · 13 min
“Make two options in an existing form default to on.”
+ frontend-quality-and-validation-evidence
Copilot CLI · 80 min
“Find out why an integration job fails on one machine, and fix it if the cause is confirmed.”
+ checklist, solution-optimality
Twenty-five professionals, each able to draw on its own authorised subset of Layer 3 skills, give up to ~1014 distinct professional + Layer 3 combinations — before a single reference is counted. That is the space the selector chooses from, not a prediction: evidence rules make almost all of them unreachable for any one task, which is exactly the point.
Sessions anonymised: task wording generalised, every project path, address and repository name removed.
The problem
The question is not whether a model can write code. It is whether it knows what should change, who owns the decision, what must stay invariant, when evidence is insufficient, and what actually proves the work is complete.
Ordinary AI coding
What stays undecided
rd-skills
What each step decides
Core model
Three control systems act on every task at once: the boundary decides what may change, the skills decide how it is done professionally, and assurance decides why anyone should believe it is finished.
01
What is the simplest correct path?
The default route for an implementation request is the task agent: inspect, edit, self-check, then fresh targeted validation. No mandatory brief, contract, handoff or review stands in front of it.
02
Whose judgment does this need?
Each assignment gets exactly one primary professional, then the Layer 3 skills its selector authorises for this evidence, and only the references whose load conditions actually fire.
03
What would justify going deeper?
Analysis, a brief, a dependency plan and independent review are added because a real question or risk demands them — never because of a level, a file count or a fixed state machine.
When they conflict, this is the order
How it works
This is the whole ordinary path. There is no mandatory brief, task contract, handoff or review standing in front of it — those are added only when the engineering facts call for them.
You describe the result you want, in plain language. You do not need to investigate the repository first.
Main selects one primary professional and the Layer 3 skills the evidence calls for. It never reads your business code itself.
The task agent finds the owner, the tests and the callers by itself. An unknown local file is discovery work, not a reason to escalate.
The smallest complete change that supports the request. Read scope can widen; write scope cannot.
Behaviour, impact and structure, checked against what the change was supposed to do.
Run after the final material edit. A later edit makes earlier proof stale, so it does not count.
Changed files, results, proof limits, and any decision still waiting on you.
The implementing agent discovers local files, owners and tests as part of the task. It asks for deeper analysis when an unresolved decision could change the implementation, and stops for any missing authorization or user-owned decision.
These are not four stages every change passes through. Each one answers a different question, and only the ones with a question to answer show up.
Do we know how to make the change correctly?
Resolves a specific uncertainty from current source, or answers an explicit analysis or diagnosis request. It does not edit.
Who makes the change?
Inspects the owner, tests, and consumers, then edits within the assigned scope and checks its work.
Does the change pass the relevant checks?
Runs tests, builds, lint, or other appropriate observations after the final relevant edit. The Task performs this work.
Do we need an independent second judgment?
A separate agent inspects the actual change or artifact and reports concrete defects and limits. It does not repair them.
Validation is an activity, not a fifth agent role. A reviewer can examine tests and their results, but independent review never replaces running the checks.
Depth is not chosen by a level or a file count. It is chosen by whether an unresolved question would actually change the implementation.
A decision that would change the implementation is still unresolved.
Worth it when
Not a trigger
You ask for it, or independent judgment measurably raises confidence.
Worth it when
Not a trigger
How to tell it is working
A control plane is only useful if you can recognise when it is doing its job — and when it is performing ceremony instead. These are the signals, straight from the project's usage guide.
Normal behaviour
Behaviour to question
rd-skills reuses your existing authorization for bounded, reversible work. It asks when the decision is yours: new scope, intended product behaviour, a compatibility break, or authority for a destructive, privileged, production or irreversible action.
Architecture
Six responsibility planes constrain the same task simultaneously. When the Task Agent edits a file, its skills, execution level, evidence obligations and authority all apply at once.
Authority
What the user and the host actually permit.
Knowledge
Which expertise is in context, and why it was loaded.
Role
Fixed tool boundaries — not a fixed order.
Coordination
What gets added, and only when it is needed.
Evidence
What can be re-checked by whoever reads it next.
Delivery / QA
How the runtime is built, shipped and proven.
These are responsibility planes, not six sequential workflow stages.
Boundary
rd-skills is non-intercepting and host-native. It ships prompts, profiles, knowledge and markdown — not a shadow execution environment sitting between you and your agent.
What it has
What it deliberately has not
Control rules stay inspectable, host permission boundaries stay explicit, and the agent is never pulled away from the engineering task in order to satisfy an internal protocol.
Agent roles
Roles are split by authority and tool boundary, not by personality. Professionalism comes from skills, which is why four fixed agents can cover a large number of engineering domains.
Can
Deliberately cannot
Can
Deliberately cannot
Can
Deliberately cannot
Can
Deliberately cannot
An implementation request goes straight to the task agent. An unknown local owner, file, test or caller is that agent's discovery work — not a reason to start analysis.
Skill architecture
The host sees 26 top-level skills. The remaining 154 items stay behind the selected professional and load only when the current decision needs them — none of the knowledge is removed, only deferred.
Step 1 · one primary professional
Use analysis-agent for ambiguous or missing intent: slice desired behavior, boundaries, constraints, and completion signals. Skip an accepted Brief or repository-independent answers fully determined by user facts.
Step 2 · authorised Layer 3 · 4 candidates · loaded only as this task's evidence calls for
Do not load every skill, and do not starve the decision either. Load what supports the current design, implementation or verification — and nothing that only matches a keyword.
Professional skills
Not a Java skill or a React skill. Each professional owns a class of engineering decision; languages, platforms and domains arrive underneath it as Layer 3.
Use analysis-agent for ambiguous or missing intent: slice desired behavior, boundaries, constraints, and completion signals. Skip an accepted Brief or repository-independent answers fully determined by user facts.
analysis-agent: source-backed implementation-preparation, causal diagnosis-only, or repository source-backed-answer; skip source-free, implementation-ready, or accepted-artifact work.
Use review-agent for a high-risk Engineering Brief when a critical path, architecture boundary, material risk, or multiple downstream tasks need deeper design evidence. Skip ordinary work without those signals.
Use review-agent for an ordinary Engineering Brief, Task Plan, acceptance, or contract artifact. Exclude high-risk design and release-readiness approval.
Analyze an API, schema, migration, or compatibility decision with analysis-agent, or implement its bounded contract change with task-agent. Do not select it when no data or public-contract surface is affected.
Use task-agent for bounded frontend component or browser changes involving interaction, accessibility, API failures, security, or regression proof. Skip backend-only work and design exploration without implementation.
Use analysis-agent to map acceptance to validation, task-agent to add or run bounded tests, and review-agent to assess proof coverage. Skip work with no material change or already-fresh complete validation.
analysis-agent: analyze permissions, secrets, sensitive data, trust boundaries and injection; task-agent: implement controls; review-agent: assess evidence. Skip self-review or no security/privacy lifecycle impact.
Use review-agent on implementation or repair diffs for hallucinated APIs, unsupported assumptions, unsafe abstractions, and dependency or regression risks. Skip work without a diff or after reviewer edits.
Use analysis-agent for active multi-responder incident command, cadence, mitigation, communications, or handoff. Skip ordinary diagnosis, reliability design, release approval, post-incident docs, and execution.
Evidence
There is no mandatory evidence ledger. What remains is the part that was always doing the work: read the source now, validate after the last edit, and state plainly what you could not prove.
Conclusions about owner, behaviour and consumers come from reading the code now — not from inheriting a summary or trusting a locator.
Affected behaviour is re-verified after the final material edit. A later edit makes the earlier result stale, and stale results are not reported as current.
Skipped, flaky, unavailable and partial results are reported as they are. Nothing is upgraded into a PASS, and unknown stays unknown.
Risk and hosts
There is no level ladder to climb. Risk handling turns on five distinctions that are easy to collapse — and on what each host surface can actually do.
Possibility≠Reachability
Something being conceivable is not the same as a path an actor can actually take.
Unknown≠Unsafe
A gap in knowledge is a reason to look, not evidence that a risk exists.
Mutability≠Trust boundary
Code that can change is not automatically code that crosses a privilege line.
Capability≠Authorization
A host exposing a tool does not authorize destructive, privileged or production effects.
Risk category≠Material risk
A security-sounding word is not itself a finding. Reachable impact is.
Escalation needs all three
There is no fixed process hierarchy. Depth is not chosen by a risk score, a severity ladder or a state machine — it comes from the engineering facts of the task in front of you.
rd-skills projects the control model onto what each host actually supports, and says so where a surface falls short.
| Host or surface | Artifact delivery | Live invocation | Full workflow | Limit |
|---|---|---|---|---|
| Codex | Skills + Agent Profiles | $engineering-control-plane | Available | Artifacts checked; live loading not proved |
| Claude Code | Skills + Agent Profiles | /engineering-control-plane | Available | Artifacts checked; live loading not proved |
| Copilot CLI | Skills + Agent Profiles | /engineering-control-plane | Available | Copilot CLI only |
| Cline | Skills only | Not established | Not established | Artifact delivery only |
| OpenAI API | Zip packages | Not applicable | API integration owns orchestration | API integration only |
Codex
Claude Code
Copilot CLI
Cline
OpenAI API
Artifact delivery, live invocation and full workflow are separate questions. An invocation rule verified on one surface says nothing about another, and static checks on the installed files do not prove that a running host loaded them.
Quickstart
One runtime, no profile flag to choose. These commands come out of the repository at build time, so they cannot drift from what the project actually supports — and the setup page turns them into the exact lines for your agent and scope.
python3 -m pip install .
python3 scripts/quickstart.py --agent codex --scope user$engineering-control-plane
Payment callbacks sometimes create the same order twice.
Find the cause and fix it. Add the necessary regression test and verify the change.You do not need to investigate the repository first. Add paths, acceptance criteria or a test command when you already know them; otherwise describe the problem and let the task agent find the owner, the tests and the callers.
Open source
The registries, the build, the validators and the evaluation harness are all in the repository. So are the governance rules for adding a skill.