Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion plugins/agent-plugins-conformance-core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Node.js 22 or newer must be available as `node` on the client's executable searc

| Case IDs | What the check establishes |
| --- | --- |
| `skills.discovery.immediate-children` | The agent reports the expected markers for both immediate child skills loaded through the client. Discovery depends on that account. |
| `skills.discovery.immediate-children` | The agent reports the expected markers for both valid immediate-child skills loaded through the client; the fixture also includes a README-only directory and a nested reference `SKILL.md`. Discovery depends on that account. |
| `mcp.stdio.tool-availability.cwd-omitted`, `mcp.stdio.tool-availability.cwd-plugin-relative`, `mcp.stdio.tool-availability.cwd-plugin-root`, `mcp.stdio.tool-availability.cwd-plugin-data` | Each server returned a valid observation. |
| `mcp.stdio.cwd.omitted` | Omitted `cwd` uses the package root. |
| `mcp.stdio.cwd.plugin-relative`, `mcp.stdio.cwd.plugin-root` | Relative and root-placeholder `cwd` resolve to `probe-workdir`. |
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
name: conformance-nested
description: A nested reference fixture accompanying the core discovery skills.
---

# Nested reference fixture

This file is present as a nested reference resource.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This directory intentionally contains no skill definition.
Comment thread
jonathanhefner marked this conversation as resolved.
9 changes: 7 additions & 2 deletions test/package.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,23 @@ test('plugin and MCP target the same published specification version', async ()
assert.equal((await load('mcp')).$schema, 'https://agent-plugins.org/schemas/1.0.0/mcp.schema.json');
});

test('primary run skill is separate from the two core discovery witnesses', async () => {
test('primary run skill is separate from the core discovery fixture layout', async () => {
const primary = new URL('../plugins/agent-plugins-conformance/', import.meta.url);
const core = new URL('../plugins/agent-plugins-conformance-core/', import.meta.url);
assert.deepEqual((await readdir(new URL('skills/', primary))).sort(), ['run-conformance']);
assert.deepEqual((await readdir(new URL('skills/', core))).sort(), ['conformance-alpha', 'conformance-beta']);
const skills = new URL('skills/', core);
assert.deepEqual((await readdir(skills)).sort(), ['conformance-alpha', 'conformance-beta', 'without-skill']);
const runSkill = await readFile(new URL('skills/run-conformance/SKILL.md', primary), 'utf8');
assert.match(runSkill, /^name: run-conformance$/m);
for (const name of ['alpha', 'beta']) {
const witness = await readFile(new URL(`skills/conformance-${name}/SKILL.md`, core), 'utf8');
assert.match(witness, new RegExp(`^name: conformance-${name}$`, 'm'));
assert.ok(witness.includes(`APC_${name.toUpperCase()}_V1`));
}
assert.deepEqual((await readdir(new URL('without-skill/', skills))).sort(), ['README.md']);
const nested = await readFile(new URL('conformance-alpha/references/conformance-nested/SKILL.md', skills), 'utf8');
assert.match(nested, /^name: conformance-nested$/m);
assert.match(nested, /^description: .+$/m);
});

test('recovery fixture contains exactly the intended invalid manifest and MCP fields', async () => {
Expand Down
Loading