Skip to content

fix(cli/agent-init): skills install only to .claude/skills with no .agents/skills canonical mirror — non-Claude agents get nothing, and usage measures ~zero #1675

Description

@rickylabs

Summary

netscript agent init installs skills only into .claude/skills/. There is no .agents/skills/
mirror in the generated workspace, so every non-Claude agent gets nothing — and the framework's own
repository does the opposite, keeping .agents/skills/ as canonical and generating .claude/skills/
from it.

Measured skill usage in a generated workspace is effectively zero, across this wave and, by the same
evidence pattern, previous ones.

Evidence

Fresh 0.0.6 scaffold + agent init --host all --with-docs:

.claude/skills/   aspire  deno  help.md  netscript  netscript-build  netscript-operate  playwright-cli
.agents/skills/   ABSENT

Wave 7 run 3 — Claude Opus 5, max effort, ~1.5 h, 9 commits, five NetScript-relevant skills installed:

  • Skill invocations: 1.

The root AGENTS.md does name them — "Installed skills: netscript, netscript-build,
netscript-operate, aspire, and deno"
— so this is not a case of the agent being unaware they
exist. Being named in one sentence, with no statement of when to invoke which, produced one call in
ninety minutes.

Two distinct problems

1. Claude-only installation. .claude/skills/ is a Claude Code convention. This wave alone drove
work through Gemini via the Antigravity CLI, and through Kimi, Grok and Qwen over an OpenRouter
transport. An agy-hosted agent cannot read .claude/skills/ at all. Any non-Claude consumer of a
NetScript project is shipped a skill set it structurally cannot see.

2. It inverts the framework's own convention. This repository's CLAUDE.md states: "Keep
.claude/skills/ generated from .agents/skills/; do not hand-edit mirrored files."
Canonical
source is .agents/skills/; the Claude directory is the derived mirror. The scaffold ships only the
mirror
, which is the inverse of what the framework itself practises and what the cross-agent
convention expects.

Target contract

Acceptance

  • Fresh scaffold contains .agents/skills/ with the canonical skill set
  • .claude/skills/ is generated from it, not authored independently
  • A non-Claude host (e.g. agy) can discover the skills from the generated workspace
  • Root AGENTS.md says when to reach for each skill
  • Measured smoke shows non-zero skill use or a recorded rejection

Boundaries

Related to #1674 (root AGENTS.md consolidation and content) but distinct: that issue owns what the
guaranteed-read file says
; this one owns where skills are installed and for whom. Related to #1672
(Deno toolchain guidance) only in that all three land in the same agent init output.

Provenance

Wave 7 run 3, evidence in agent-posts/wave-7/runs/PROCESS-LEDGER.md. Filed 2026-08-17.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions