Skip to content

skill list/info: provenance transparency surface - #162

Merged
yourconscience merged 3 commits into
mainfrom
feat/skill-transparency
Sep 7, 2026
Merged

skill list/info: provenance transparency surface#162
yourconscience merged 3 commits into
mainfrom
feat/skill-transparency

Conversation

@yourconscience

@yourconscience yourconscience commented Sep 7, 2026

Copy link
Copy Markdown
Owner

What

New read-only skill transparency surface (no writes, reuses existing inspect reports):

  • dotagents skill list — per detected harness, every entry in its skill root with provenance: managed (local) / managed (external: owner/repo@commit) (from dotagents.lock), foreign symlink (other tools' plugins), unmanaged dir, stale managed, drifted symlink -> target, broken symlink, plus the per-harness skill-listing context-cost estimate. Config-driven harnesses (Hermes/Amp) print their integration note and managed set instead of walking foreign directories.
  • dotagents skill info <name> — canonical path + source (local vs pinned external), SKILL.md listing context estimate, and how every detected harness currently sees the skill.
  • README: "Inspecting your skill roots" section, skills.sh interop instructions (copy/fork model verified with npx skills add yourconscience/myagents), and a "Not to be confused with" note covering npm dotagents and @sentry/dotagents.

Verification

  • go build, go vet, focused tests (skill_list_test.go: owner/repo parsing, lock+config origins, provenance classification incl. foreign/broken/unmanaged/drifted, info arg validation) — pass.
  • Full go test ./... — pass.
  • dotagents dogfood — 14/15 pass; the one failure (agnix on the myagents AGENTS.md:92) is pre-existing in the live config root and unrelated to this change.
  • Smoke-tested skill list and skill info against the live five-harness setup: managed/external/foreign classification matches the actual symlink layout.
  • skills.sh interop verified end-to-end in a sandbox project: installer discovers the repo's skills and copies one cleanly with --copy.

Summary by Sourcery

Expose read-only skill provenance and cross-harness visibility inspection through new list and info commands.

New Features:

  • Add read-only dotagents skill list reporting per-harness skill entries, provenance, integration status, and context-cost estimates.
  • Add dotagents skill info <name> to show canonical skill source, listing cost, and visibility across detected harnesses.

Enhancements:

  • Document skill-root inspection and distinguish canonical symlink management from skills.sh copy-based installation.
  • Document interoperability with skills.sh and clarify similarly named dotagents packages.

Documentation:

  • Update CLI usage and the dotagents skill reference with the new inspection commands and installation guidance.

Tests:

  • Add focused coverage for repository origin parsing, lock/config provenance, skill classification, and info argument validation.

@sourcery-ai

sourcery-ai Bot commented Sep 7, 2026

Copy link
Copy Markdown

Reviewer's Guide

Introduces read-only dotagents skill list and skill info commands that reuse inspection data to expose canonical provenance, per-harness visibility, symlink anomalies, and context-cost estimates, with focused tests and README documentation for skills.sh interoperability and package-name clarification.

Sequence diagram for skill list provenance inspection

sequenceDiagram
    participant User
    participant CLI as dotagents CLI
    participant Config as Config and lock files
    participant Inspect as inspectAgents
    participant FS as Harness skill roots

    User->>CLI: runSkillList(args)
    CLI->>Config: loadContext(opts)
    CLI->>Config: expectedSkills(repoRoot, home, cfg)
    CLI->>Inspect: inspectAgents(selected, expected, ...)
    Inspect->>FS: inspect managed, stale, external, and missing entries
    FS-->>Inspect: agent reports
    CLI->>Config: skillOrigins(cfg, repoRoot, home, expected)
    Config-->>CLI: local and owner/repo@commit origins
    CLI-->>User: per-harness provenance and context estimate
Loading

Sequence diagram for skill info visibility lookup

sequenceDiagram
    participant User
    participant CLI as dotagents CLI
    participant Config as Canonical skill set
    participant Inspect as inspectAgents
    participant FS as Harness skill roots

    User->>CLI: runSkillInfo(name)
    CLI->>Config: expectedSkills(repoRoot, home, cfg)
    Config-->>CLI: canonical path
    CLI->>Config: skillOrigins(cfg, repoRoot, home, expected)
    Config-->>CLI: local or pinned external origin
    CLI->>Inspect: inspectAgents(selected, single, ...)
    Inspect->>FS: check each harness
    FS-->>Inspect: per-harness reports
    CLI-->>User: canonical source, SKILL.md cost, and harness visibility
Loading

File-Level Changes

Change Details Files
Add read-only skill provenance inspection commands.
  • Register skill list and skill info in command dispatch and help output.
  • Reuse canonical skill resolution and inspect reports to show per-harness visibility, provenance, symlink state, and listing context-cost estimates.
  • Resolve external origins from lockfile and configured sources, including normalized owner/repository names and shortened commits.
  • Handle config-driven harnesses with integration notes and managed-set output instead of directory traversal.
  • Validate skill names and report canonical paths, source provenance, SKILL.md listing cost, and detected-harness state.
cmd/dotagents/main.go
cmd/dotagents/skill_list.go
Cover provenance parsing and inspection behavior with focused tests.
  • Test owner/repository extraction for HTTPS and SSH Git URLs.
  • Test lockfile and configured external-source origin resolution.
  • Test managed, foreign, broken, unmanaged, missing, and drifted classifications.
  • Test missing-argument validation for skill info.
cmd/dotagents/skill_list_test.go
Document the new transparency surface and interoperability model.
  • Document skill list and skill info usage and the information they expose.
  • Explain skills.sh copy/fork interoperability and warn against installing both models on one machine.
  • Disambiguate this project from similarly named npm packages.
README.md

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai

coderabbitai Bot commented Sep 7, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Team

Run ID: 696bf366-a040-4325-981c-a607c34293b1


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 1 issue

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="cmd/dotagents/skill_list.go" line_range="223-224" />
<code_context>
+// skill: where the canonical copy lives, which source pinned it, and how
+// every detected harness currently sees it.
+func runSkillInfo(args []string) error {
+	if len(args) < 1 || strings.HasPrefix(args[0], "-") {
+		return errors.New("skill info requires a skill name")
+	}
+	name := args[0]
</code_context>
<issue_to_address>
**nitpick (bug_risk):** `dotagents skill info <name> extra-argument` silently succeeds and reports the first skill because `runSkillInfo` validates only `args[0]` and ignores every remaining positional argument.

**Triggers:** When a user mistypes the command or supplies more than one skill name.

**Suggested fix:** Reject arguments after the skill name, for example by checking `len(args) > 1` after parsing flags.
</issue_to_address>

Sourcery assessment

Approved.


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

Comment thread cmd/dotagents/skill_list.go

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e5e0b89e13

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread cmd/dotagents/skill_list.go Outdated
Comment thread cmd/dotagents/skill_list.go
Comment thread cmd/dotagents/main.go
@yourconscience
yourconscience merged commit 9f11e69 into main Sep 7, 2026
6 checks passed
@yourconscience
yourconscience deleted the feat/skill-transparency branch September 7, 2026 10:28

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 32d190bcd4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread README.md
Comment on lines +98 to +99
npx skills add yourconscience/myagents -s dotagents --copy # verified: copies cleanly, no symlinks
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add the opening fence for the installer command

The installer command has a closing code fence but no opening fence. Markdown therefore treats this fence as the start of a code block and renders the following “Not to be confused with,” “Configuration,” and “Releases” sections as code until a later fence closes it. Add an opening fenced-code marker before the npx command so the remainder of the README renders normally.

Useful? React with 👍 / 👎.

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.

1 participant