Skip to content

feat(skills): add metadata.author "AutoVault" and source for host UI grouping - #98

Open
jack-arturo wants to merge 4 commits into
mainfrom
feat/skill-author-attribution
Open

feat(skills): add metadata.author "AutoVault" and source for host UI grouping#98
jack-arturo wants to merge 4 commits into
mainfrom
feat/skill-author-attribution

Conversation

@jack-arturo

Copy link
Copy Markdown
Contributor

Summary

Add metadata.author: AutoVault (and metadata.source) to curated AutoVault skills. This follows the Agent Skills spec convention used by publishers like Resend so that host UIs (Grok, etc.) can group and attribute skills.

  • Schema now tolerates extra metadata keys.
  • New helpers: getMetadata, extractAuthor, extractSource.
  • SkillSummary and get_skill now expose author and frontmatter_source.
  • Updated the two meta skills that exist on main, docs, test, and README.

Other bundled skill updates remain on the current feature branch (their source files landed via the render-fidelity work).

Changes

  • src/validation/schema.ts, frontmatter.ts
  • src/types.ts, storage/index.ts
  • src/tools/get-skill.ts
  • skills/{autovault-skill,skill-author}/SKILL.md + docs
  • README.md + tests/list-search-get.test.ts

Verification

  • Full test suite passes
  • npm run build
  • Bootstrap + profile sync + get_skill verified to surface the fields
  • Symlinked host-visible SKILL.md files carry the attribution

This is additive and keeps 3rd-party skill authorship intact.

…grouping

- Make metadata schema tolerant of author/source via .passthrough()
- Add getMetadata, extractAuthor, extractSource helpers (parse-aware)
- Extend SkillSummary with author and source (from frontmatter metadata)
- Return author + frontmatter_source (distinct from provenance source) from get_skill
- Declare author + source on AutoVault curated skills pre-existing on main
- Update skill-author guidance, autovault-skill docs, README, and test
- Enables Grok (and other hosts) to group AutoVault skills like Resend ones' "Resend" attribution
Copilot AI review requested due to automatic review settings June 17, 2026 11:23
@jack-arturo

Copy link
Copy Markdown
Contributor Author

/copilot-review

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR adds publisher-style attribution metadata (metadata.author and metadata.source) to curated AutoVault skills and surfaces that attribution in skill list/get outputs so host UIs can group and label skills by publisher.

Changes:

  • Allow extra keys in metadata during schema validation and add helpers to extract author/source from frontmatter.
  • Extend stored skill summaries and get_skill output to include author plus frontmatter source (as frontmatter_source in get_skill).
  • Update bundled meta skills, README docs, and tests to reflect/verify the new fields.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
tests/list-search-get.test.ts Updates tests and fixtures; should additionally assert new author/frontmatter source fields in listSkills() output.
src/validation/schema.ts Adjusts zod schema so metadata accepts extra keys via .passthrough().
src/validation/frontmatter.ts Adds getMetadata / extractAuthor / extractSource helpers (needs parse-error guarding).
src/types.ts Adds optional author and source fields to SkillSummary (naming differs from PR description).
src/tools/get-skill.ts Exposes author and frontmatter_source in get_skill responses while keeping provenance source object.
src/storage/index.ts Persists author and frontmatter source in SkillSummary / readSkillSummary.
skills/skill-author/SKILL.md Adds metadata.author / metadata.source and updates guidance examples.
skills/autovault-skill/SKILL.md Adds metadata.author / metadata.source and updates documentation text.
README.md Documents metadata.author/metadata.source in the validation gate section (formatting/text needs a small correction).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/validation/frontmatter.ts
Comment thread README.md Outdated
Comment on lines 280 to 285
5. Cross-check declared capabilities against observed behavior.

Skills may include `metadata.author` and `metadata.source` (see Agent Skills spec).
AutoVault-curated skills ship with `author: AutoVault` so hosts can group and
attribute them in skill browsers (matching how Resend skills appear as "Resend").
6. Deduplicate exact, near-exact, and functionally similar proposals.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

The relevant lines were updated in the follow-up commit (formatting corrected and reference clarified to metadata.author). This thread is now outdated relative to the current diff.

Comment thread src/types.ts
Comment thread tests/list-search-get.test.ts
Comment thread tests/list-search-get.test.ts
- Guard getMetadata() parse with try/catch (return {} on error)
- Fix README list formatting and clarify metadata.author reference
- Rename SkillSummary field to frontmatter_source for consistency with get_skill
- Update test md() fixture and listSkills assertions for new author/frontmatter_source fields
- Propagate field rename in buildSummary / readSkillSummary / getSkill
@jack-arturo
jack-arturo requested a review from Copilot June 17, 2026 11:30
@jack-arturo

Copy link
Copy Markdown
Contributor Author

/copilot-review

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.

Comment thread src/validation/frontmatter.ts Outdated
Comment thread src/storage/index.ts Outdated
…pe pollution

- getMetadata now returns a null-prototype object and copies only own enumerable properties (skips __proto__/constructor/prototype).
- buildSummary now uses Object.hasOwn before reading metadata.author / .source / .version.
- These were flagged as high-severity in Copilot review on current head.
- Matches existing repo defenses (FORBIDDEN_PATH_SEGMENTS, hasForbiddenPathSegment, etc.).
@jack-arturo
jack-arturo requested a review from Copilot June 17, 2026 11:44
@jack-arturo

Copy link
Copy Markdown
Contributor Author

/copilot-review

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

return Object.create(null);
}
// Defend against prototype pollution (repo already forbids __proto__ etc in other paths).
// Copy only own enumerable properties into a null-prototype object.
@jack-arturo

Copy link
Copy Markdown
Contributor Author

/copilot-review

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.

Comment on lines +59 to +62
const rawMeta = (data as Record<string, unknown>).metadata;
if (typeof rawMeta !== "object" || rawMeta === null || Array.isArray(rawMeta)) {
return Object.create(null);
}
Comment thread src/storage/index.ts
Comment on lines +326 to +327
const author = Object.hasOwn(metadata, "author") && typeof metadata.author === "string" && metadata.author.length > 0 ? metadata.author : undefined;
const frontmatterSource = Object.hasOwn(metadata, "source") && typeof metadata.source === "string" && metadata.source.length > 0 ? metadata.source : undefined;
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.

2 participants