feat(cli): emit portable Markdown agents under .agents/agents
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 65/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- markdown, typescript, yaml
- Domain
- ai-infra-agents, cli, tooling
Research direction
Look at the aidd translate command in the CLI, likely in src/cli/translate.ts or similar. Examine the existing flat build logic that writes to .codex/agents/ and .agents/skills/. The task is to extend this to also write a Markdown file with YAML frontmatter to .agents/agents/<name>/agent.md. Check the existing collision and --force handling. Run the existing tests for the flat build to understand the output format and add new tests for the portable agent generation.
Written by the indexing model from the issue text.
Description
Problem
Kimi Code and Antigravity both discover project agents under .agents/agents/, but AIDD does not emit a portable agent there.
The existing Codex flat build already writes portable Skills under .agents/skills/, while agents are emitted only as Codex TOML under .codex/agents/. Reusing that output on Kimi or Antigravity therefore loses the agents.
The two hosts accept one common shape: .agents/agents/<name>/agent.md. Kimi also accepts a flat <name>.md, but Antigravity ignores it silently, falls back to its default agent, and can still report a successful plugin validate result.
Outcome
As a developer using AIDD across Kimi Code and Antigravity, I want one generated Markdown agent projection under .agents/agents/<name>/agent.md, so both hosts discover and execute the same agent without separate Kimi and Antigravity copies or silent fallback.
Codex's existing TOML projection remains an intentional host-specific output.
Scope
- Extend
aidd translate <src> --to codex --as flatto emit each source agent twice:- the existing
.codex/agents/aidd-<plugin>-<agent>.toml; .agents/agents/aidd-<plugin>-<agent>/agent.md.
- the existing
- Use
aidd-<plugin>-<agent>as both the portable directory identity and generated YAMLname, preserving a non-empty sourcedescription. - Keep
.agents/skills/and the existing Codex TOML projection behavior unchanged. - Never emit the flat
.agents/agents/<name>.mdshape. - Use the flat build's existing collision contract: reject an occupied canonical destination unless
--forceapplies. Never remove or rewrite a different user-owned flat agent path. - Document the portable path, the retained Codex projection, Kimi's accepted shapes, Antigravity's directory-only constraint, and why
agy plugin validateis not execution evidence.
Acceptance criteria
- A source Markdown agent produces
.agents/agents/aidd-<plugin>-<agent>/agent.mdand the existing.codex/agents/aidd-<plugin>-<agent>.tomlin one Codex flat build. - The portable file parses as YAML-frontmatter Markdown;
nameanddescriptionare non-empty and match the normalized source identity and source description. - No
.agents/agents/<name>.mdfile is generated. - Existing
.agents/skills/output and the contents of the Codex TOML projection remain compatible, covered by regression assertions. - An occupied canonical portable destination follows the existing flat-build collision and
--forcebehavior; unrelated user-owned files remain untouched. - An isolated live fixture agent emits a unique
AIDD_PORTABLE_AGENT_OKmarker when invoked through both Kimi Code and Antigravity. - Each live proof records the host version, exact invocation, fixture revision, exit status, and shortest output proving discovery and execution from the generated project path.
- The Antigravity proof includes an invented-agent negative control, so silent fallback to the default agent cannot pass.
- Compatibility documentation records the shared shape, Codex exception, and host limitations.
Initial evidence was captured with Kimi Code 2.0.2 and Antigravity agy 1.2.5. A newer version may replace either witness only when the new version and result are recorded.
Out of scope
- Hook declarations or telemetry host support.
- Global configuration mutation or global installation.
- New Kimi Code or Antigravity tool profiles.
- Deleting or migrating user-authored flat agents.
References
- Source investigation: #859
- Kimi Code host delivery: #733
- Antigravity host delivery: #511
- Dominant language
- TypeScript
- Stars
- 481
- Forks
- 45
- Avg merge
- 19h 38m
- Merged PRs (30d)
- 108
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ai-driven-dev/framework
-
refactor(aidd-orchestrator): the check zone says when to stop, and reviews its axes in one round Open
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
ai-driven-dev/framework#887 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
ai-driven-dev/framework#873 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
ai-driven-dev/framework#872 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
ai-driven-dev/framework#625 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
ai-driven-dev/framework#467 · 1 comment ·
All issues in ai-driven-dev/framework
Similar issues
-
VerificationGate: ATTRIBUTION quote guard never matches a normal quotation (\b around the quote) Open
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
danielmiessler/LifeOS#2234 ·
-
T: Bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
-
Mend: dependency security vulnerability untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 70/100