Skip to content

Skills 3/6: skills you turn on are offered to the model, and every pull shows #1405

Description

@AbirAbbas

Step 3 of #1277. It lands in the single pull request for #1277 (branch feat/1277-skills).

What

  • Where the choice is kept. Three places hold the same two lists, on: [names] and off: [names]. The narrowest scope that names a skill wins; otherwise the skill is off. Every write goes through one engine door.
Scope Where
global ~/.codeaf/skills.json
project <project>/.codeaf/skills.json
conversation the conversation's meta.json
  • Catalog. Skills that are on are listed in message[0] (name, one-line description, size), beside the standing orders and folders. The catalog changes only when a setting changes or a folder is attached.
  • The skill tool. Its name is constrained to the skills that are on. It returns the body wrapped as <skill name="…" dir="…">…</skill>, with the skill's bundled files listed. Relative paths resolve against dir, and the skill's folder is allow-listed for read.
  • Absent, not broken. With no skill on, neither the catalog nor the tool exists.
  • Every pull is visible. Each call draws its own transcript row naming the skill and its size, for example used skill pdf-processing · 3.1 KB. It is never folded into prose.
  • Loaded once. A second pull of the same skill in one conversation returns a short "already loaded". Compaction keeps a loaded skill.
  • allowed-tools pre-approves nothing.
  • Words. prompts/system.md says what a skill is and when to open one. docs/CHAT-V3.md's "dropped skills & rules" line is invalidated by this pull request's change entry.

Acceptance, end to end

Real binary with a stub model:

  • With pdf-processing turned on globally, the request's system prompt lists it, and the tools include skill with pdf-processing in its enum.
  • When the stub calls skill with pdf-processing, the transcript draws used skill pdf-processing · followed by its size. The tool result carries the body and the skill's dir.
  • With nothing on, the request has no skill tool and no catalog section.
  • A project skills.json turning the skill off overrides the global on. A conversation turning it on overrides the project off.
  • The belt gate names skill. The manual answers "which skills can you use on your own?".

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:sessionThe engine — turns, tasks, the toolbelt, checkpointsarea:toolsThe tool layer: built-in tools, registries, beltsfeatureWork that adds a capability; developers break it into tasks

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions