Skip to content

feat(api): allow scoped skill content publication without management rights - #1248

Draft
ctkm-aelf wants to merge 2 commits into
developfrom
feat/content-only-skill-publishing
Draft

ctkm-aelf wants to merge 2 commits into
developfrom
feat/content-only-skill-publishing

Conversation

@ctkm-aelf

@ctkm-aelf ctkm-aelf commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator

Summary

A dedicated worker can upload skill packages and publish new versions using ornn:skill:publish, without the broad ornn:skill:update permission. Updates still require ownership or an explicit per-skill write grant. Publish-only callers cannot change existing visibility, permissions, ownership, bindings, or tags, or delete skills or versions.

An explicit POST /skills?public=true creates a readable skill at insert time; ordinary creation remains private. Existing create/update permissions retain their behavior. The dedicated role contains only ornn:skill:read and ornn:skill:publish.

Linked issue

Closes #1247

Type of change

  • New feature (feat:)
  • Docs (docs:)

Commit decomposition

  • Each commit is self-contained and covers one logical change.
  • Code and regression tests are separate from documentation and release notes.
  • No unrelated refactors or Co-Authored-By trailers.

Changeset

  • Added .changeset/content-only-publication.md with an ornn-api minor bump.

Testing

  • Full workspace TypeScript check passed using the installed TypeScript 6 executable.
  • Lint passed with zero errors and two existing warnings; assistant KB regeneration and diff checks passed.
  • Added regressions through the real proxy-auth and CRUD routes for machine identity, exact object grants, malformed public queries, JSON/multipart visibility attempts, and management/deletion denials. Added service and Mongo integration coverage for initial visibility.
  • Hosted CI passed: 2,603 API tests, 672 web tests, 38 TypeScript SDK tests, Python SDK checks, API coverage 95.54% (75% gate), and both Docker builds. The new machine-identity/object-grant/denial cases and Mongo initial-visibility integration test executed successfully. All code-scanning checks passed.

Notes for the reviewer

The companion NyxID PR #1588 supplies a separate curation service-account identity, exact catalog-service assignment grants, and an explicit method/path policy on a dedicated Ornn catalog target. That existing proxy policy is required to exclude unrelated authenticated Ornn routes such as assistant chat; Ornn permission names alone do not restrict those routes. Existing skill owners grant the machine UUID write access once. Content updates then require no per-change review.

The change is additive and does not provision roles, credentials, or live catalog services. This feature PR targets develop according to the repository workflow.

Allow a dedicated principal to upload and publish immutable skill versions through existing object write grants. Public creation is explicit and persisted at insert; publish-only updates reject any privacy field, including no-op and multipart input. Existing management permissions stay separate.

Add trusted-proxy route coverage and Mongo integration tests. Local typecheck and lint pass; executable tests require Docker or CI.
Document the publish permission, strict public opt-in, existing object grants to a service-account subject, and the dedicated NyxID operation policy needed to exclude auth-only execution routes. Include the feature changeset; regenerating the assistant KB leaves its selected digest unchanged.
@ctkm-aelf
ctkm-aelf marked this pull request as ready for review September 17, 2026 00:26
@ctkm-aelf
ctkm-aelf marked this pull request as draft September 17, 2026 01:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Content-only skill publication permission for autonomous workers

1 participant