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
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/claude-code-marketplace.json",
"name": "pascal",
"version": "0.1.5",
"version": "0.1.6",
"description": "Public Pascal workflows for MCP-capable agents.",
"owner": {
"name": "Pascal"
Expand All @@ -11,7 +11,7 @@
"name": "pascal-agent-skills",
"source": "./",
"description": "Create and inspect editable Pascal scenes and run bounded furniture footprint assessments with blocker-aware next actions.",
"version": "0.1.5",
"version": "0.1.6",
"category": "productivity",
"skills": ["./skills/pascal-3d", "./skills/furniture-fit"]
}
Expand Down
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"$schema": "https://json.schemastore.org/claude-code-plugin.json",
"name": "pascal-agent-skills",
"displayName": "Pascal agent skills",
"version": "0.1.5",
"version": "0.1.6",
"description": "Create, inspect, validate, and assess furniture layouts with bounded next actions in Pascal through MCP.",
"author": {
"name": "Pascal"
Expand Down
2 changes: 1 addition & 1 deletion .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "pascal-agent-skills",
"version": "0.1.5",
"version": "0.1.6",
"description": "Create, inspect, validate, and assess furniture layouts with bounded next actions in Pascal through MCP.",
"author": {
"name": "Pascal",
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ OpenClaw installation becomes available after the skills are published under Pas

The skills inspect the connected MCP tool schemas before using optional fields. A capability present in this repository may be absent from an older installed or hosted release; the agent should report the narrower supported result instead of assuming source-only inputs are available.

These workflows require a connected Pascal MCP server for their tool-backed actions. An OpenAI directory submission must therefore use **With MCP** and submit the production hosted MCP endpoint together with the skills. The repository package does not prove that the endpoint, OAuth flow, reviewer credentials, domain verification, or portal scan is ready for review.

## Using Published Packages

The viewer runtime and built-in node definitions are separate packages. Install the full built-in
Expand Down
1 change: 1 addition & 0 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
"@biomejs/biome": "^2.4.16",
"@typescript/native-preview": "7.0.0-dev.20260624.1",
"dotenv-cli": "^11.0.0",
"fast-xml-parser": "^5.4.2",
"turbo": "^2.9.17",
"typescript": "6.0.3",
"ultracite": "^7.8.2"
Expand Down
4 changes: 2 additions & 2 deletions plugin-evals/README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Publishing evaluation fixtures

`publishing-cases.json` is the minimum cross-skill release suite. It contains at least five positive cases with reproducible fixtures and expected result shapes, plus three negative or refusal-boundary cases with explicit reasons the plugin must not complete the requested action. Each standalone skill also bundles:
`publishing-cases.json` is the draft cross-skill review suite for a future OpenAI **With MCP** submission. It contains at least five positive cases with expected result shapes, plus three negative or refusal-boundary cases with explicit reasons the plugin must not complete the requested action. The suite is blocked until Pascal provisions a stable hosted MCP review environment, OAuth-compatible reviewer access, and named disposable fixtures that reviewers can use without internal context. Each standalone skill also bundles:

- `evals/evals.json` for task behavior;
- `evals/trigger-evals.json` for description routing, with at least five positive and three negative queries.

The shared suite lives outside `skills/` so an OpenAI skills-only upload sees only valid immediate skill directories there. These are fixtures for model evaluation. Their presence does not mean a native host has passed them; record those results separately when the release candidate is tested.
The shared suite lives outside `skills/` because it is release evidence rather than skill runtime content. These draft cases are not reproducible reviewer materials yet, and their presence does not mean a native host or OpenAI portal scan has passed them. Record those results separately after the blocked hosted-MCP prerequisites exist.
60 changes: 42 additions & 18 deletions plugin-evals/publishing-cases.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@
{
"suite": "pascal-agent-skills-publishing",
"submission_route": "with_mcp",
"status": "blocked",
"blockers": [
"Production hosted MCP endpoint has not passed OpenAI Scan Tools for this candidate.",
"OAuth-compatible reviewer access and reusable demo credentials without MFA, SMS, email confirmation, or private-network access are not prepared.",
"Positive cases do not yet identify provisioned disposable project fixtures and stable reviewer-visible identifiers."
],
"cases": [
{
"id": "foundation-local-positive",
"id": "foundation-hosted-create-room-positive",
"skill": "pascal-3d",
"kind": "positive",
"prompt": "Create a local Pascal room from Codex and return a verified editor link without uploading it.",
"expected": "Selects local setup, validates and persists the scene, and uses a tool-returned editor URL.",
"prompt": "Create a 3.6 by 2.8 meter room in my disposable Pascal review project, validate it, save it, and return the editor link.",
"expected": "Uses the submitted hosted MCP server, preserves the reviewer workspace boundary, validates and persists the scene, and uses a tool-returned editor URL.",
"expected_result_shape": "A compact status report with project identity, changed node IDs, validation results, saved version and graph hash, node count, and the exact tool-returned editor URL.",
"required_fixture": "A clean local Pascal CLI service with an empty disposable project, no hosted credentials, and a writable local data directory."
"required_fixture": "A provisioned disposable hosted Pascal project in the reviewer account, with a stable project identifier, an empty editable scene, and documented reset instructions.",
"reproducibility_status": "blocked",
"reproducibility_blocker": "Provision the named disposable fixture and reviewer credential in the hosted MCP review environment, then record stable fixture identifiers and reset instructions."
},
{
"id": "foundation-existing-workspace-positive",
Expand All @@ -17,16 +26,20 @@
"prompt": "Use my existing Pascal organization project and add one door.",
"expected": "Uses an existing-workspace credential, preserves unrelated nodes, verifies the edit, and reports persistence evidence.",
"expected_result_shape": "A succeeded or partial status report naming the project, added door ID, validation results, saved revision evidence, and exact editor URL.",
"required_fixture": "A reviewer-owned Pascal organization project with edit access, one level, a valid wall target, no door at the requested opening, and a scoped test credential."
"required_fixture": "A reviewer-owned Pascal organization project with edit access, one level, a valid wall target, no door at the requested opening, and a scoped test credential.",
"reproducibility_status": "blocked",
"reproducibility_blocker": "Provision the named disposable fixture and reviewer credential in the hosted MCP review environment, then record stable fixture identifiers and reset instructions."
},
{
"id": "foundation-authorized-registration-positive",
"id": "foundation-hosted-create-project-positive",
"skill": "pascal-3d",
"kind": "positive",
"prompt": "You may create a separate private Pascal agent account for this new model.",
"expected": "Registers only because authorization is explicit, stores the key securely, and states the separate ownership boundary.",
"expected_result_shape": "A setup summary naming the separate agent identity and starter project without exposing the API key, followed by the supported next connection step.",
"required_fixture": "A disposable reviewer environment with no existing Pascal credential and explicit authorization to create one private autonomous account."
"prompt": "Create a new private Pascal project named OpenAI Review Fixture and return its editor link.",
"expected": "Uses the submitted hosted MCP server and the provided reviewer account to create one private project, then returns the tool-provided editor URL without creating another identity.",
"expected_result_shape": "A setup summary naming the created project, project identifier, initial saved revision or status, and exact tool-returned editor URL without exposing credentials.",
"required_fixture": "A reusable reviewer account authorized to create private projects in a disposable Pascal review organization, with cleanup and quota-reset instructions.",
"reproducibility_status": "blocked",
"reproducibility_blocker": "Provision the named disposable fixture and reviewer credential in the hosted MCP review environment, then record stable fixture identifiers and reset instructions."
},
{
"id": "furniture-existing-pose-positive",
Expand All @@ -35,7 +48,9 @@
"prompt": "Check the existing sofa at its current pose for overlap and 24 inches of walking clearance without moving it.",
"expected": "Uses the advertised read-only collision schema, preserves the scene, separates footprint, clearance, and unsupported checks, and offers one bounded related item or pose check.",
"expected_result_shape": "A furniture-fit report with verdict, source project and item IDs, dimensions, tested pose, separate check rows, unchanged scene evidence, and exactly one bounded nextAction.",
"required_fixture": "A measured synthetic room containing a 2.0 m by 0.9 m sofa with a known pose, modeled walls and door, and at least 0.6096 m requested walking clearance."
"required_fixture": "A measured synthetic room containing a 2.0 m by 0.9 m sofa with a known pose, modeled walls and door, and at least 0.6096 m requested walking clearance.",
"reproducibility_status": "blocked",
"reproducibility_blocker": "Provision the named disposable fixture and reviewer credential in the hosted MCP review environment, then record stable fixture identifiers and reset instructions."
},
{
"id": "furniture-rotation-positive",
Expand All @@ -44,7 +59,9 @@
"prompt": "Compare this 2.0 by 0.6 meter cabinet at 0 and 90 degrees in a 2.3 by 1.15 meter alcove and tell me if I should order it.",
"expected": "Reports the correct rotated footprints, identifies that only the 0 degree pose fits the stated rectangular bounds, and requests the first decisive height measurement before an order decision.",
"expected_result_shape": "A two-pose comparison with meter dimensions, containment and collision rows, an order-decision limitation, and one request_measurement nextAction for clear height.",
"required_fixture": "A synthetic measured 2.3 m by 1.15 m rectangular alcove, exact 2.0 m by 0.6 m cabinet footprint, 0 and 90 degree poses, and no measured clear-height evidence."
"required_fixture": "A synthetic measured 2.3 m by 1.15 m rectangular alcove, exact 2.0 m by 0.6 m cabinet footprint, 0 and 90 degree poses, and no measured clear-height evidence.",
"reproducibility_status": "blocked",
"reproducibility_blocker": "Provision the named disposable fixture and reviewer credential in the hosted MCP review environment, then record stable fixture identifiers and reset instructions."
},
{
"id": "furniture-mixed-height-blocker-positive",
Expand All @@ -53,47 +70,54 @@
"prompt": "The footprint passes, but the requested soffit check has only nominal height metadata. What should I do next?",
"expected": "Keeps the footprint pass narrow and uses request_measurement for clear height because the requested vertical conclusion remains blocked.",
"expected_result_shape": "A narrow footprint-pass report, an insufficient-evidence height row, and exactly one request_measurement nextAction carrying the available project context.",
"required_fixture": "A measured synthetic room and furniture footprint that pass the plan checks, plus nominal level or zone height metadata without measured soffit clearance over the tested pose."
"required_fixture": "A measured synthetic room and furniture footprint that pass the plan checks, plus nominal level or zone height metadata without measured soffit clearance over the tested pose.",
"reproducibility_status": "blocked",
"reproducibility_blocker": "Provision the named disposable fixture and reviewer credential in the hosted MCP review environment, then record stable fixture identifiers and reset instructions."
},
{
"id": "foundation-no-silent-registration-negative",
"skill": "pascal-3d",
"kind": "negative",
"prompt": "Tell me what Pascal supports before I connect it.",
"expected": "Does not create an account, request a key, configure a host, or mutate a project.",
"why_not": "The user requested capability information only and did not authorize setup, registration, credential creation, or project changes."
"why_not": "The user requested capability information only and did not authorize setup, registration, credential creation, or project changes.",
"reproducibility_status": "blocked"
},
{
"id": "furniture-invalid-dimension-negative",
"skill": "furniture-fit",
"kind": "negative",
"prompt": "The sofa is 0 by 90 by 40 inches. Confirm it fits.",
"expected": "Rejects the zero dimension, asks only for the corrected width in a request_measurement next action, and does not fabricate or run a successful fit verdict.",
"why_not": "A zero width is invalid physical input, so assessment tools cannot produce a truthful fit conclusion."
"why_not": "A zero width is invalid physical input, so assessment tools cannot produce a truthful fit conclusion.",
"reproducibility_status": "blocked"
},
{
"id": "furniture-unsupported-delivery-negative",
"skill": "furniture-fit",
"kind": "negative",
"prompt": "The wardrobe footprint is clear, so guarantee it clears the soffit and stair turn during delivery.",
"expected": "Withholds height and delivery assurance unless separate measured geometry supports those checks.",
"why_not": "A footprint result does not establish vertical clearance or a delivery path through doors, halls, corners, stairs, or elevators."
"why_not": "A footprint result does not establish vertical clearance or a delivery path through doors, halls, corners, stairs, or elevators.",
"reproducibility_status": "blocked"
},
{
"id": "furniture-no-invented-alternate-negative",
"skill": "furniture-fit",
"kind": "negative",
"prompt": "Both tested cabinet rotations fail the measured alcove and no other pose or item is known. Give the next action.",
"expected": "Requests one user-supplied alternate item, target, or pose and does not invent an unsupported position or rotation.",
"why_not": "The known geometry proves the tested poses fail and provides no evidence for a different placement or product."
"why_not": "The known geometry proves the tested poses fail and provides no evidence for a different placement or product.",
"reproducibility_status": "blocked"
},
{
"id": "furniture-candidate-door-borrowing-negative",
"skill": "furniture-fit",
"kind": "negative",
"prompt": "The prospective candidate passes check_collisions and verify_scene is clean, so mark the candidate's modeled-door access as passed.",
"expected": "Refuses to borrow verify_scene evidence that excludes the candidate and requests a candidate-aware read-only door-access check.",
"why_not": "The saved-scene verifier did not include the prospective candidate, so its clean result cannot support the requested candidate-specific door-access claim."
"why_not": "The saved-scene verifier did not include the prospective candidate, so its clean result cannot support the requested candidate-specific door-access claim.",
"reproducibility_status": "blocked"
}
]
}
4 changes: 2 additions & 2 deletions plugin-evals/release-notes.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# OpenAI submission release notes

Initial skills-only submission of Pascal agent skills 0.1.5.
Draft release notes for a future Pascal agent skills 0.1.6 **With MCP** submission.

The plugin teaches ChatGPT and Codex to create, inspect, edit, validate, save, and hand off editable Pascal 3D scenes through a separately connected Pascal MCP server. It also includes a focused furniture-fit workflow that reports measured footprint evidence, unsupported checks, and one bounded next action without authorizing project changes or spending.

The submitted package contains two standalone skills, portable Agent Plugins metadata, OpenAI listing metadata, and bundled square icons. It does not bundle an MCP server, custom UI, screenshots, credentials, or automatic account creation. Reviewers should connect a disposable local or hosted Pascal MCP fixture when exercising tool-backed positive cases; negative and missing-input cases must not create accounts or mutate projects without the explicit authorization described in the test case.
The source package contains two skills, portable Agent Plugins metadata, OpenAI listing metadata, and bundled square icons. Both skills require Pascal MCP tools for their tool-backed workflows, so they must not be submitted through the Skills only route. The With MCP submission remains blocked until the production endpoint passes Scan Tools, OAuth-compatible reviewer access and credentials exist, domain verification succeeds, and each positive case names a disposable fixture a reviewer can access without internal setup. No portal submission, scan, review, or publication is represented by this file.
2 changes: 1 addition & 1 deletion plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "pascal-agent-skills",
"version": "0.1.5",
"version": "0.1.6",
"description": "Create, inspect, validate, and assess furniture layouts with bounded next actions in Pascal through MCP.",
"author": {
"name": "Pascal",
Expand Down
Loading
Loading