@papi-ai/skills 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/manifest.mjs CHANGED
@@ -49,6 +49,47 @@ function walk(root, dir, out) {
49
49
  }
50
50
  }
51
51
 
52
+ /**
53
+ * task-2163: owner-only skills that must NEVER ship in the public @papi-ai/skills
54
+ * pack — they expose internal owner workflow or commercial detail. This is the
55
+ * distribution security control expressed as a RULE, not hand-curation: the
56
+ * manifest build asserts none of these are present in skills/ and fails CLOSED
57
+ * if one ever leaks. Superset of the handoff strip-list (caveman, stream-mode,
58
+ * owner-actions, crm, burn, build-in-public) plus the owner/commercial and
59
+ * host-loop skills that are out of scope for the shared pack.
60
+ */
61
+ export const OWNER_ONLY_SKILLS = new Set([
62
+ 'caveman',
63
+ 'stream-mode',
64
+ 'owner-actions',
65
+ 'crm',
66
+ 'burn',
67
+ 'burn-dashboard',
68
+ 'build-in-public',
69
+ 'broadcast-compose',
70
+ 'cold-outbound',
71
+ 'winback',
72
+ 'papi-auto', // host-loop (papi-auto-class), out of scope for the pack
73
+ ]);
74
+
75
+ /**
76
+ * Assert no owner-only skill is present in the given skill-name list. Throws a
77
+ * descriptive error naming the offenders so the pack build fails CLOSED rather
78
+ * than silently shipping internal workflow. Pure — callers pass the scanned
79
+ * names, so it is trivially testable and reusable by any future packer.
80
+ */
81
+ export function assertNoOwnerOnlySkills(names) {
82
+ const leaked = names.filter((n) => OWNER_ONLY_SKILLS.has(n));
83
+ if (leaked.length > 0) {
84
+ throw new Error(
85
+ `@papi-ai/skills refusing to build: owner-only skill(s) present in the public pack — ${leaked.join(', ')}. ` +
86
+ `These expose internal owner/commercial workflow and must never ship. Remove them from packages/skills/skills/ ` +
87
+ `(they belong in .claude/skills/ only); if one is genuinely generalizable, remove it from OWNER_ONLY_SKILLS in ` +
88
+ `lib/manifest.mjs with justification.`,
89
+ );
90
+ }
91
+ }
92
+
52
93
  /** Load and parse the package manifest. Throws if missing/malformed. */
53
94
  export function loadManifest(packageRoot = PACKAGE_ROOT) {
54
95
  const raw = readFileSync(join(packageRoot, 'manifest.json'), 'utf8');
package/manifest.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "packageVersion": "0.1.1",
4
- "generatedAt": "2026-07-13T08:27:41.473Z",
3
+ "packageVersion": "0.1.2",
4
+ "generatedAt": "2026-08-01T18:51:37.168Z",
5
5
  "skills": [
6
6
  {
7
7
  "name": "check-mcp",
@@ -31,7 +31,7 @@
31
31
  {
32
32
  "name": "papi-install",
33
33
  "kind": "eager",
34
- "checksum": "3ade812fcdfd7964"
34
+ "checksum": "2b8a7ae5832fcad0"
35
35
  },
36
36
  {
37
37
  "name": "papi-plan",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@papi-ai/skills",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "PAPI's shareable Claude Code skill bundle — single source of truth, installed (not copied) into projects with pinned versioning",
5
5
  "license": "Elastic-2.0",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: papi-install
3
- description: Connect PAPI (Persistent Adaptive Planning Intelligence) to this project — one command, no config editing. Use when the user says "install papi", "set up papi", "connect papi", "add papi", or asks how to get structured plan/build/review cycles for their project. Also use when PAPI tools are expected but no papi MCP server is configured.
3
+ description: Connect PAPI (Persistent Adaptive Project Intelligence) to this project — one command, no config editing. Use when the user says "install papi", "set up papi", "connect papi", "add papi", or asks how to get structured plan/build/review cycles for their project. Also use when PAPI tools are expected but no papi MCP server is configured.
4
4
  ---
5
5
 
6
6
  # Install PAPI