Agent Companies Specification
Extension of the Agent Skills Specification Version:agentcompanies/v1-draft
1. Purpose
An Agent Company package is a filesystem- and GitHub-native format for describing a company, team, agent, project, task, and associated skills using markdown files with YAML frontmatter. This specification is an extension of the Agent Skills specification, not a replacement for it. It defines how company-, team-, and agent-level package structure composes around the existingSKILL.md model.
This specification is vendor-neutral. It is intended to be usable by any agent-company runtime, not only Paperclip.
The format is designed to:
- be readable and writable by humans
- work directly from a local folder or GitHub repository
- require no central registry
- support attribution and pinned references to upstream files
- extend the existing Agent Skills ecosystem without redefining it
- be useful outside Paperclip
2. Core Principles
- Markdown is canonical.
- Git repositories are valid package containers.
- Registries are optional discovery layers, not authorities.
SKILL.mdremains owned by the Agent Skills specification.- External references must be pinnable to immutable Git commits.
- Attribution and license metadata must survive import/export.
- Slugs and relative paths are the portable identity layer, not database ids.
- Conventional folder structure should work without verbose wiring.
- Vendor-specific fidelity belongs in optional extensions, not the base package.
3. Package Kinds
A package root is identified by one primary markdown file:COMPANY.mdfor a company packageTEAM.mdfor a team packageAGENTS.mdfor an agent packagePROJECT.mdfor a project packageTASK.mdfor a task packageSKILL.mdfor a skill package defined by the Agent Skills specification
4. Reserved Files And Directories
Common conventions:- only markdown files are canonical content docs
- non-markdown directories like
assets/,scripts/, andreferences/are allowed - package tools may generate optional lock files, but lock files are not required for authoring
5. Common Frontmatter
Package docs may support these fields:schemais optional and should usually appear only at the package rootkindis optional when file path and file name already make the kind obviousslugshould be URL-safe and stablesourcesis for provenance and external referencesmetadatais for tool-specific extensions- exporters should omit empty or default-valued fields
6. COMPANY.md
COMPANY.md is the root entrypoint for a whole company package.
Required fields
Recommended fields
Semantics
includesdefines the package graph- local package contents should be discovered implicitly by folder convention
includesis optional and should be used mainly for external refs or nonstandard locations- included items may be local or external references
COMPANY.mdmay include agents directly, teams, projects, tasks, or skills- a company importer may render
includesas the tree/checkbox import UI
7. TEAM.md
TEAM.md defines an org subtree.
Example
Semantics
- a team package is a reusable subtree, not necessarily a runtime database table
manageridentifies the root agent of the subtreeincludesmay contain child agents, child teams, or shared skills- a team package can be imported into an existing company and attached under a target manager
8. AGENTS.md
AGENTS.md defines an agent.
Example
Semantics
- body content is the canonical default instruction content for the agent
docspoints to sibling markdown docs when presentskillsreferences reusableSKILL.mdpackages by skill shortname or slug- a bare skill entry like
reviewshould resolve toskills/review/SKILL.mdby convention - if a package references external skills, the agent should still refer to the skill by shortname; the skill package itself owns any source refs, pinning, or attribution details
- tools may allow path or URL entries as an escape hatch, but exporters should prefer shortname-based skill references in
AGENTS.md - vendor-specific adapter/runtime config should not live in the base package
- local absolute paths, machine-specific cwd values, and secret values must not be exported as canonical package data
Skill Resolution
The preferred association standard between agents and skills is by skill shortname. Suggested resolution order for an agent skill entry:- a local package skill at
skills/<shortname>/SKILL.md - a referenced or included skill package whose declared slug or shortname matches
- a tool-managed company skill library entry with the same shortname
- exporters should emit shortnames in
AGENTS.mdwhenever possible - importers should not require full file paths for ordinary skill references
- the skill package itself should carry any complexity around external refs, vendoring, mirrors, or pinned upstream content
- this keeps
AGENTS.mdreadable and consistent withskills.sh-style sharing
9. PROJECT.md
PROJECT.md defines a lightweight project package.
Example
Semantics
- a project package groups related starter tasks and supporting markdown
ownershould reference an agent slug when there is a clear project owner- a conventional
tasks/subfolder should be discovered implicitly includesmay containTASK.md,SKILL.md, or supporting docs when explicit wiring is needed- project packages are intended to seed planned work, not represent runtime task state
10. TASK.md
TASK.md defines a lightweight starter task.
Example
Semantics
- body content is the canonical markdown task description
assigneeshould reference an agent slug inside the packageprojectshould reference a project slug when the task belongs to aPROJECT.mdrecurring: truemarks the task as ongoing recurring work instead of a one-time starter task- tasks are intentionally basic seed work: title, markdown body, assignee, project linkage, and optional
recurring: true - tools may also support optional fields like
priority,labels, ormetadata, but they should not require them in the base package
Recurring Tasks
- the base package only needs to say whether a task is recurring
- vendors may attach the actual schedule / trigger / runtime fidelity in a vendor extension such as
.paperclip.yaml - this keeps
TASK.mdportable while still allowing richer runtime systems to round-trip their own automation details - legacy packages may still use
schedule.recurrenceduring transition, but exporters should preferrecurring: true
- vendors should ignore unknown recurring-task extensions they do not understand
- vendors importing legacy
schedule.recurrencedata may translate it into their own runtime trigger model, but new exports should prefer the simplerrecurring: truebase field
11. SKILL.md Compatibility
A skill package must remain a valid Agent Skills package. Rules:SKILL.mdshould follow the Agent Skills spec- Paperclip must not require extra top-level fields for skill validity
- Paperclip-specific extensions must live under
metadata.paperclipormetadata.sources - a skill directory may include
scripts/,references/, andassets/exactly as the Agent Skills ecosystem expects - tools implementing this spec should treat
skills.shcompatibility as a first-class goal rather than inventing a parallel skill format
Example compatible extension
12. Source References
A package may point to upstream content instead of vendoring it.Source object
Supported kinds
local-filelocal-dirgithub-filegithub-dirurl
Usage modes
vendored: bytes are included in the packagereferenced: package points to upstream immutable contentmirrored: bytes are cached locally but upstream attribution remains canonical
Rules
commitis required forgithub-fileandgithub-dirin strict modesha256is strongly recommended and should be verified on fetch- branch-only refs may be allowed in development mode but must warn
- exporters should default to
referencedfor third-party content unless redistribution is clearly allowed
13. Resolution Rules
Given a package root, an importer resolves in this order:- local relative paths
- local absolute paths if explicitly allowed by the importing tool
- pinned GitHub refs
- generic URLs
- resolve
repo + commit + path - fetch content
- verify
sha256if present - verify
blobif present - fail closed on mismatch
- missing files
- hash mismatches
- missing licenses
- referenced upstream content that requires network fetch
- executable content in skills or scripts
14. Import Graph
A package importer should build a graph from:COMPANY.mdTEAM.mdAGENTS.mdPROJECT.mdTASK.mdSKILL.md- local and external refs
- render graph as a tree
- checkbox at entity level, not raw file level
- selecting an agent auto-selects required docs and referenced skills
- selecting a team auto-selects its subtree
- selecting a project auto-selects its included tasks
- selecting a recurring task should make it clear that the import target is a routine / automation, not a one-time task
- selecting referenced third-party content shows attribution, license, and fetch policy
15. Vendor Extensions
Vendor-specific data should live outside the base package shape. For Paperclip, the preferred fidelity extension is:- adapter type and adapter config
- adapter env inputs and defaults
- runtime settings
- permissions
- budgets
- approval policies
- project execution workspace policies
- issue/task Paperclip-only metadata
- the base package must remain readable without the extension
- tools that do not understand a vendor extension should ignore it
- Paperclip tools may emit the vendor extension by default as a sidecar while keeping the base markdown clean
- do not duplicate
promptTemplatewhenAGENTS.mdalready contains the agent instructions - do not export provider-specific secret bindings such as
secretId,version, ortype: secret_ref - export env inputs as portable declarations with
requiredoroptionalsemantics and optional defaults - warn on system-dependent values such as absolute commands and absolute
PATHoverrides - omit empty and default-valued Paperclip fields when possible
16. Export Rules
A compliant exporter should:- emit markdown roots and relative folder layout
- omit machine-local ids and timestamps
- omit secret values
- omit machine-specific paths
- preserve task descriptions and recurring-task declarations when exporting tasks
- omit empty/default fields
- default to the vendor-neutral base package
- Paperclip exporters should emit
.paperclip.yamlas a sidecar by default - preserve attribution and source references
- prefer
referencedover silent vendoring for third-party content - preserve
SKILL.mdas-is when exporting compatible skills
17. Licensing And Attribution
A compliant tool must:- preserve
licenseandattributionmetadata when importing and exporting - distinguish vendored vs referenced content
- not silently inline referenced third-party content during export
- surface missing license metadata as a warning
- surface restrictive or unknown licenses before install/import if content is vendored or mirrored
18. Optional Lock File
Authoring does not require a lock file. Tools may generate an optional lock file such as:- cache resolved refs
- record final hashes
- support reproducible installs
- lock files are optional
- lock files are generated artifacts, not canonical authoring input
- the markdown package remains the source of truth
19. Paperclip Mapping
Paperclip can map this spec to its runtime model like this:- base package:
COMPANY.md-> company metadataTEAM.md-> importable org subtreeAGENTS.md-> agent identity and instructionsPROJECT.md-> starter project definitionTASK.md-> starter issue/task definition, or recurring task template whenrecurring: trueSKILL.md-> imported skill packagesources[]-> provenance and pinned upstream refs
- Paperclip extension:
.paperclip.yaml-> adapter config, runtime config, env input declarations, permissions, budgets, routine triggers, and other Paperclip-specific fidelity
metadata.paperclip
20. Cutover
Paperclip should cut over to this markdown-first package model as the primary portability format.paperclip.manifest.json does not need to be preserved as a compatibility requirement for the future package system.
For Paperclip, this should be treated as a hard cutover in product direction rather than a long-lived dual-format strategy.