Skip to content

Latest commit

 

History

History
97 lines (82 loc) · 5.07 KB

File metadata and controls

97 lines (82 loc) · 5.07 KB

agent-collab development guide

This repository publishes one package: plugins/agent-collab. Do not create a host preset, provider-specific plugin, compatibility shim, downloader, post-install hook, or provider executor source.

Source boundaries

  • skill-specs/ is the editable source for generated collaboration skills.
  • plugins/agent-collab/skills/ is generated output.
  • This repository is authoritative for public policy, governance, skills, client behavior, migration, and release-safety checks.
  • Native runtime implementation and build/sign credentials stay in a separate private producer that contributors do not need to access.
  • This repository may receive only final signed native standalone bundles and their closed per-member/whole-bundle manifest metadata.
  • Never place executor source, bytecode, private absolute paths, or retired package trees in the active source or release archive.

Build and validation

python3 scripts/build_skills.py
python3 scripts/build_marketplace.py
python3 -m unittest discover -s tests -t . -v
python3 -m unittest discover -s scripts -p 'test_*.py' -v
python3 scripts/check_release_consistency.py
python3 scripts/check-public-export-safety.py --active-tree
git diff --check

For a release containing project-estimation, first obtain the governed, privacy-safe maintenance handoff. The public tree may admit only its declared aggregate prior, pricing snapshot, quota snapshot, and version-bound receipt; never substitute fixtures or raw evidence. Run scripts/verify_project_estimation_maintenance.py directly when diagnosing the gate. scripts/check_release_consistency.py and the remote release workflow must both reject a missing, stale, mismatched, or privacy-unsafe handoff. See docs/architecture/project-estimation.md.

Commit only a unique changelog.d/ fragment for user-visible changes. The generated CHANGELOG.md is compiled by the release flow.

After every other release task has completed, perform the final documentation closeout. It aligns the public architecture handbook, root README, and generated changelog evidence with the exact release before the release is declared complete. Keep that public material human-first; low-level machine contracts belong in the package reference, and private executor/control-plane recipes do not belong in this repository.

Repository governance

docs/public-governance.md is the local, self-contained contribution and merge contract. The PR template defines the required evidence block, .github/workflows/compliance-trace.yml validates its form in CI, and scripts/check_pr_compliance.py is the authoritative local pre-merge form check. No external or private repository is required to apply these rules.

Runtime policy

Provider routing must pass the provider-free startup preflight. Active legacy package state blocks all provider routing. Unknown-family governance review requires explicit configuration and fails closed; non-governance use carries an independence warning. Policy-only safe mode preserves only validated async inbox/coordination seams and returns typed unavailable for every model route.

The native client accepts no path or member override, resolves only the manifest-selected closed bundle beneath the plugin root, and rejects links, aliases, traversal, and unknown members. A git-checkout source is admitted under a permission FLOOR — owner read+execute, no setuid/setgid/sticky — that tolerates the operator's umask group/other bits, because the whole plugin checkout is ONE trust domain: the host runs the plugin's Python control plane from that same checkout, so a peer who can write it already owns the client and the mode is not the integrity boundary there. Integrity is verified per-member (architecture/type/size/hash/signing) plus whole-bundle identity. Offline Developer ID, hardened-runtime, and secure-timestamp checks run before invocation; Apple notarization remains a release gate. The environment is scrubbed and only the fixed direct-runtime protocol is used.

Clean public repository invariant

Every active path, reachable ref, and release archive must remain free of provider executor source, raw provider invocation recipes, private absolute paths, credentials, retired package trees, and unreviewed native artifacts. Before publication or release, run both active-tree and history modes of scripts/check-public-export-safety.py. History mode covers refs reachable in the local clone, so a clone retaining pre-rewrite refs fails it even when the canonical remote is clean; compare against a disposable full clone of the canonical remote and record the snapshot checked. That comparison clears only the recorded snapshot, never the failing clone, the publication candidate, unfetched refs, or prior exposure. If contamination is suspected, stop publication and follow SECURITY.md; never paste suspect material into a public issue or pull request. See docs/public-governance.md for the full rule.