Files
AgentCompany/tests/e2e/builtin-skills-fixture.ts
T
ZacharyZhang-NY 86aa6fdb29 Ship skills built-in: bundle the catalogue, assign per hire, force humanizer
Skills no longer come from the user's ~/.agents library - most users have
none, and the CEO branch that compiled the entire catalogue into its
prompt overflowed the model context (1.1MB) and failed every CEO run.

- Bundle "built-in skills/" with the app (extraResources) and stage it
  at startup into <profile>/builtin-skills as one dir-per-skill copy -
  both bundle shapes (SKILL.md dirs and flat category .md files)
  normalize into the same importable layout
- Import the staged catalogue per org at startup and inside onboarding,
  so the CEO's first run already carries it
- Forced house style: resolveRuntimeSnapshot unions the humanizer skill
  into every agent's runtime (CEO included) as a resolution rule - no
  binding row to forget, delete, or bypass; revoke_skill refuses it
- CEO staffs hires with skills: hire_agent accepts a skills array,
  grant_skill/revoke_skill adjust later, list_skills now shows
  descriptions from skill frontmatter
- Kill the c_suite compile-all branch; everyone resolves bindings-only,
  capped at 200k chars with omissions named in the prompt
- Remove the Skills settings page and its import/sync/test IPC surface;
  drop ~/.agents discovery and the AGENTCOMPANY_NEW_SKILLS_ROOT seam in
  favor of AGENTCOMPANY_NEW_BUILTIN_SKILLS_DIR
- Tests: staging/import/forced-resolution/cap units, real-bundle CI
  check, e2e asserts the tab is gone and the catalogue self-imports
2026-07-08 21:18:50 -04:00

25 lines
1014 B
TypeScript

import { mkdirSync, writeFileSync } from "node:fs";
import { join } from "node:path";
/**
* A miniature of the real bundled catalogue: the forced humanizer skill plus
* one category of flat skills. E2E launches point
* AGENTCOMPANY_NEW_BUILTIN_SKILLS_DIR here so startup imports stay small and
* hermetic instead of reading the full repo bundle.
*/
export function seedBuiltinSkillsFixture(root: string): string {
mkdirSync(join(root, "humanizer"), { recursive: true });
writeFileSync(
join(root, "humanizer", "SKILL.md"),
"---\nname: humanizer\nversion: 2.1.1\ndescription: |\n Remove signs of AI-generated writing from text.\n---\n\nWrite like a person.\n",
"utf8",
);
mkdirSync(join(root, "engineering"), { recursive: true });
writeFileSync(
join(root, "engineering", "engineering-backend-architect.md"),
"---\nname: Backend Architect\ndescription: Scalable system design specialist.\n---\n\nDesign the systems that hold everything up.\n",
"utf8",
);
return root;
}