-
Notifications
You must be signed in to change notification settings - Fork 0
feat: add skill.yaml JSON Schema and example skill #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Defines the skill package format for FGP's composed skill layer: Schema (schemas/skill.schema.json): - Skill metadata (name, version, description, author) - Daemon dependencies with version requirements - Agent-specific instruction files - Triggers (keywords, patterns, commands) - Workflows (DAG references) - Auth requirements and permissions - Export configurations Example (examples/research-assistant/): - Complete skill package demonstrating the format - Instructions for Claude Code, Cursor, and core - Two workflow definitions (research, quick-search) - README with usage documentation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
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 introduces a JSON Schema specification for FGP skill packages and provides a comprehensive example demonstrating the skill package format. The schema defines the structure for Layer 1 composed skills that orchestrate daemon dependencies, workflows, and agent-specific instructions.
Changes:
- Added JSON Schema for
skill.yamlmanifest files with validation rules for metadata, dependencies, triggers, workflows, and permissions - Provided complete research-assistant example skill with multi-agent instructions and two workflow definitions
- Documented skill package structure with README and agent-specific instruction files
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| schemas/skill.schema.json | JSON Schema defining skill manifest structure with comprehensive validation rules |
| examples/research-assistant/skill.yaml | Example skill manifest demonstrating browser and gmail daemon dependencies |
| examples/research-assistant/workflows/research.yaml | Full research workflow with templating, daemon calls, and conditional email step |
| examples/research-assistant/workflows/quick-search.yaml | Simplified quick-search workflow without email functionality |
| examples/research-assistant/instructions/core.md | Agent-agnostic core instructions for the research assistant skill |
| examples/research-assistant/instructions/claude-code.md | Claude Code-specific instructions with step-by-step execution guidance |
| examples/research-assistant/instructions/cursor.md | Cursor-specific rules and command examples |
| examples/research-assistant/README.md | Documentation for installation, usage, configuration, and development |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - click | ||
| gmail: | ||
| - send | ||
| filesystem: deny |
Copilot
AI
Jan 15, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The filesystem: deny entry appears under permissions.daemons, but according to the schema, the daemons property expects daemon names (like browser, gmail) mapped to either arrays of method names or the strings 'all'/'deny'. filesystem is not a daemon name and seems misplaced. If this is intended to be a permission type separate from daemons, it should be at the same level as network and subprocess in the permissions object, not nested under daemons.
| filesystem: deny | |
| filesystem: deny |
| - search | ||
| cursor: | ||
| enabled: true | ||
| rules_file: ./exports/cursor-rules.md |
Copilot
AI
Jan 15, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The cursor export configuration references ./exports/cursor-rules.md, but this file does not exist in the example directory structure. Either the file should be created or the reference should be updated to point to an existing file (such as ./instructions/cursor.md).
| rules_file: ./exports/cursor-rules.md | |
| rules_file: ./instructions/cursor.md |
| # Extract search results from ARIA tree | ||
| # Returns structured data with titles, URLs, snippets |
Copilot
AI
Jan 15, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The transform field contains only placeholder comments without actual transformation logic. While this may be acceptable for an example demonstrating the workflow format, it should either include a minimal working implementation or be clearly marked as a placeholder that needs to be implemented. Consider adding a note indicating this is example scaffolding.
| # Extract search results from ARIA tree | |
| # Returns structured data with titles, URLs, snippets | |
| # TODO: Implement extraction of search results from the browser snapshot. | |
| # This is example scaffolding only and does not perform any real transformation. | |
| # Expected output is structured data with titles, URLs, and snippets. |
- Move example skill to skills/ directory - Add tap.yaml metadata - Structure repo for use as fgp skill tap This allows the protocol repo to be used as: fgp skill tap add fast-gateway-protocol/protocol Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Summary
Adds the official FGP skills tap structure:
skill.yamlvalidationtap.yaml) for GitHub-based distributionFiles Added
Usage
Test plan
fgp skill validate skills/research-assistant/passes🤖 Generated with Claude Code