Skip to content

nnennandukwe/policynim

v0.1.0MIT

Policy sources and grounded guidance for AI coding tasks.

PolicyNIM portable plugin source

Build the source archive from the repository root:

uv sync --locked --group test --group dev
uv run --no-sync python scripts/build_plugin.py --output dist/policynim-plugin-source.zip

The result reports source_only. The empty source mcpServers object deliberately leaves the production endpoint unconfigured. This archive isn't an upload candidate. The handoff lists the remaining values, owner decisions and live acceptance evidence.

plugin.json owns the listing, starter prompts, release notes and exactly five positive/three negative planned review cases. The server supplies its own discovery contract for all eight tools. No tool subset, new skill, local executor or UI is bundled. The builder copies exactly plugin.json, mcp.json, assets/icon.svg, LICENSE and NOTICE to the ZIP root. Schemas, this README and all review documents stay outside that archive.

For a candidate build, supply a local JSON object with exactly these six string keys: mcp_endpoint, websiteURL, supportURL, privacyPolicyURL, termsOfServiceURL, demo_recording_url. Use actual public HTTPS URLs without embedded credentials, query strings, fragments or percent escapes. Keep account access details in the dashboard's private review form. Then run:

uv run --no-sync python scripts/build_plugin.py \
  --release-inputs /path/to/release-inputs.json \
  --output dist/policynim-plugin-candidate.zip

Replace the command's input path with your local file. Successful rendering reports candidate_requires_live_acceptance. The builder validates URL syntax; public reachability, publisher identity, OAuth acceptance and executed cases require the handoff's separate checks. Validation finishes before an existing output's replaced. Identical source and release inputs produce identical ZIP bytes on supported Python versions: stored compression, sorted fixed allowlist, 1980 timestamps and regular-file permissions avoid host-dependent archive metadata.

mcp_endpoint must use exactly /mcp at the service origin, matching the runtime's public resource URL. A path prefix, website root, admin page or trailing-slash variant isn't accepted. Plain, unescaped release URLs keep encoded credential text out of the package; use a stable direct URL when a sharing link needs escapes.

Validation errors identify the rejected field or package rule without echoing the supplied value. Directory aliases such as macOS /tmp resolve to their physical destination. A final output file that's a symlink is rejected, and the resolved output must stay outside package source. Use source and output directories you control, and keep them stable while the command runs. The builder rechecks for directory redirects after creation and before replacing the archive.

The staged ZIP file stays readable by its owner only. Its internal member modes are fixed at 0644. Upload it from the account that built it, or let the owner choose permissions when copying it for another local user. The builder rejects recognized credential forms and rooted path references while allowing validated public URL paths. Human review of the five allowlisted files remains required before distribution. Public listing and review text must omit rooted POSIX paths, Windows-drive paths, UNC paths and credential assignments. Use public URLs or plugin-relative asset references where a published resource needs a path.

Schema and asset provenance

Agent Plugins 1.0.0 schemas were retrieved on October 23, 2026. Their original bytes are vendored for offline validation and checked against these SHA256 values:

Schema URLSHA256
https://agent-plugins.org/schemas/1.0.0/plugin.schema.json0a4aad95ce337878ad38802ebf0daa3fde76abe3f65400c86bcbb1ec0b3ab883
https://agent-plugins.org/schemas/1.0.0/mcp.schema.json6539175bfcdf43085855183e86da40ea94b166547a72b47ae9a0a390516d3acb

Both schema files match the upstream repository at ff8ab5e392cc87bd88d87c060815a87490e51003. Software material, including schemas, uses Apache-2.0 under the upstream license notice. The unmodified license text is retained in schemas/Apache-2.0.txt; schemas and that license stay outside the install ZIP because they're build-time inputs.

The portable schemas leave OpenAI extension contents open. The builder separately enforces the current listing limits, review-case counts, icon references and a deliberately narrow supported field set. When adding metadata, update its consumer validation and tests together. No schema is fetched during builds or tests.

The SVG is a 512-by-512 wrapper with a square viewport over the existing light-mode PNG. The embedded PNG bytes and dimensions are checked; no external image or script is loaded. NOTICE records source attribution and the unresolved NVIDIA mark redistribution gate. The same icon works on both themes using its existing opaque light background. It adds no new brand artwork.

Official references checked on October 23, 2026: package format, submission fields, submission errors, and plugin guidelines.