mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-17 08:36:25 +03:00
Ship native subagent definitions for GitHub Copilot and Cursor
The github and cursor providers previously received only the generated
degraded/ inline fallbacks. Both harnesses support real custom subagents,
so the build now emits them from the same skill/agents/ source:
- GitHub Copilot: .github/agents/impeccable-<role>.agent.md with portable
frontmatter only (name + description; omitting tools grants all tools,
and Copilot has no documented model/effort/max-turns equivalents).
- Cursor: .cursor/agents/impeccable-<role>.md with name, description,
model: inherit, is_background: false, and readonly derived from the
agent's tool list (true only for the finish reviewer, which declares
neither Write nor Edit). effort/max-turns are skipped because Cursor's
effort option requires an explicit model id.
Agent bodies now also resolve {{scripts_path}} and strip rule markers in
the shared agentFormat pipeline, which fixes the previously unresolved
placeholder in the emitted Claude asset-producer agent.
The CLI installer places agents per scope: project installs write
<repo>/.github/agents/ and <repo>/.cursor/agents/; user-level installs
write ~/.copilot/agents/ (Copilot's user dir, not ~/.github/) and
~/.cursor/agents/, overwriting stale impeccable-* copies. Because
Copilot lets user-level agents shadow same-named project ones, a project
install warns when shadowing copies exist; Cursor gives project agents
precedence, so no warning there.
new-work.md and visualize.md extend their harness-naming clauses with
the Cursor and Copilot invocations. The degraded/ fallbacks keep
shipping for surfaces where the model still fails to delegate.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
dedb8a1df2
commit
fa1177ed9c
@@ -16,6 +16,10 @@ export const PROVIDERS = {
|
||||
configDir: '.cursor',
|
||||
displayName: 'Cursor',
|
||||
frontmatterFields: ['license', 'compatibility', 'metadata'],
|
||||
// Cursor subagents: `.cursor/agents/<name>.md` at repo level,
|
||||
// `~/.cursor/agents/` at user level. Project agents take precedence over
|
||||
// user ones, so installs simply overwrite on update.
|
||||
agentFormat: 'cursor-md',
|
||||
emitHooks: 'cursor',
|
||||
// Cursor reads `.cursor/hooks.json`, not `.cursor/hooks/hooks.json`.
|
||||
hooksManifestRel: 'hooks.json',
|
||||
@@ -68,6 +72,11 @@ export const PROVIDERS = {
|
||||
displayName: 'GitHub Copilot',
|
||||
placeholderProvider: 'agents',
|
||||
frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata'],
|
||||
// Copilot custom agents: `.github/agents/<name>.agent.md` at repo level,
|
||||
// `~/.copilot/agents/` at user level (the CLI installer handles placement).
|
||||
// The degraded/ fallbacks still ship for Copilot surfaces where the model
|
||||
// fails to delegate; the .agent.md files are the real subagent path.
|
||||
agentFormat: 'copilot-agent-md',
|
||||
emitHooks: 'github',
|
||||
// GitHub Copilot discovers repo-level hooks under `.github/hooks/*.json`.
|
||||
hooksManifestRel: 'hooks/impeccable.json',
|
||||
|
||||
Reference in New Issue
Block a user