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
27 lines
1.2 KiB
TypeScript
27 lines
1.2 KiB
TypeScript
import { mkdtempSync, rmSync } from "node:fs";
|
|
import { tmpdir } from "node:os";
|
|
import { join, resolve } from "node:path";
|
|
import { describe, expect, test } from "vitest";
|
|
import { stageBuiltinSkillsLibrary } from "../../src/main/services/builtin-skills";
|
|
|
|
/**
|
|
* The real bundled catalogue must stage cleanly: every skill gets a unique
|
|
* slug, the forced humanizer skill exists, and category files carry the
|
|
* descriptions agents browse. A broken bundle should fail CI, not first
|
|
* launch.
|
|
*/
|
|
describe("bundled skill catalogue", () => {
|
|
test("the repo bundle stages with unique slugs and the forced humanizer", () => {
|
|
const libraryRoot = mkdtempSync(join(tmpdir(), "ac-bundle-check-"));
|
|
try {
|
|
const staged = stageBuiltinSkillsLibrary(resolve(process.cwd(), "built-in skills"), libraryRoot);
|
|
expect(staged.length).toBeGreaterThan(200);
|
|
expect(staged.some((unit) => unit.slug === "humanizer")).toBe(true);
|
|
const withDescription = staged.filter((unit) => unit.manifest.description).length;
|
|
expect(withDescription / staged.length).toBeGreaterThan(0.9);
|
|
} finally {
|
|
rmSync(libraryRoot, { recursive: true, force: true });
|
|
}
|
|
});
|
|
});
|