Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
6333da3
refactor: reorganize tool imports and remove deprecated tests
AndyLiner13 Feb 9, 2026
088fd67
feat: implement dev supervisor script and integrate Puppeteer transpo…
AndyLiner13 Feb 9, 2026
0deb1fe
feat: remove dev supervisor script and add timeout configuration to t…
AndyLiner13 Feb 9, 2026
ddda6b4
feat: enhance accessibility tools with AX tree snapshot and direct CD…
AndyLiner13 Feb 9, 2026
170bafe
Refactor input tools to use direct CDP methods and improve accessibil…
AndyLiner13 Feb 9, 2026
de0c3bc
feat: enhance input tools to execute actions with diff or full snapsh…
AndyLiner13 Feb 9, 2026
bef7a17
feat: add notification and modal interception layer to handle blockin…
AndyLiner13 Feb 9, 2026
14ff421
feat: implement CDP event subscriptions and enhance console/network t…
AndyLiner13 Feb 9, 2026
9d2ad4e
feat: enhance initialization checks and cleanup processes for improve…
AndyLiner13 Feb 9, 2026
24ac439
Refactor input automation tools and documentation
AndyLiner13 Feb 9, 2026
c61cf86
feat: enhance console message retrieval with text and source filterin…
AndyLiner13 Feb 10, 2026
73a0216
feat: enhance tool registration to support standalone tools and impro…
AndyLiner13 Feb 10, 2026
5327c9d
feat: add output panel tool for reading VS Code logs and integrate in…
AndyLiner13 Feb 10, 2026
c39df8a
refactor: remove obsolete tests and fixtures related to screenshot, s…
AndyLiner13 Feb 10, 2026
39f937f
refactor: simplify error message in devLazyRebuildCheck and update de…
AndyLiner13 Feb 10, 2026
9e8a373
feat: Enhance network tools with pagination, response formats, and im…
AndyLiner13 Feb 10, 2026
179cbf1
feat: Update configuration handling to load from .vscode/devtools.jso…
AndyLiner13 Feb 10, 2026
f4e6ffc
feat: Refactor bridge path handling to compute deterministically and …
AndyLiner13 Feb 10, 2026
62e7025
refactor: update import paths from browser.js to vscode.js for consis…
AndyLiner13 Feb 10, 2026
0e0987c
feat: Add launch flags configuration and enhance VS Code connection h…
AndyLiner13 Feb 10, 2026
daf1a12
feat: Implement synchronous PID discovery and cleanup for Electron pr…
AndyLiner13 Feb 10, 2026
69ad2fe
feat: Update configuration handling to support new .devtools director…
AndyLiner13 Feb 10, 2026
ff3e371
feat: Enhance CLI options for workspace and extension paths, adding b…
AndyLiner13 Feb 10, 2026
f783741
refactor: remove deprecated navigation, network, performance, and sna…
AndyLiner13 Feb 10, 2026
fb11a9b
Add CodeQL analysis workflow configuration
AndyLiner13 Feb 10, 2026
0b31919
Refactor and clean up code across multiple files
AndyLiner13 Feb 10, 2026
f0c21ad
Merge branch 'main' of https://github.com/AndyLiner13/vscode-devtools…
AndyLiner13 Feb 10, 2026
732ffe1
chore(deps-dev): bump the dev-dependencies group with 2 updates
dependabot[bot] Feb 10, 2026
8d56738
Add Codacy security scan workflow
AndyLiner13 Feb 10, 2026
67f59ad
Add DevSkim workflow for security scanning
AndyLiner13 Feb 10, 2026
b1e329d
Add Fortify AST Scan workflow configuration
AndyLiner13 Feb 10, 2026
d8305e0
Create njsscan.yml
AndyLiner13 Feb 10, 2026
1b7a687
Create osv-scanner.yml
AndyLiner13 Feb 10, 2026
344d582
Add Semgrep workflow for code scanning
AndyLiner13 Feb 10, 2026
00189a7
Add SonarQube analysis workflow
AndyLiner13 Feb 10, 2026
565cf38
Add ESLint workflow for code quality checks
AndyLiner13 Feb 10, 2026
520a17c
feat: add zod dependency and patch TypeScript issues in chrome-devtoo…
AndyLiner13 Feb 10, 2026
d1fb862
Merge branch 'main' of https://github.com/AndyLiner13/vscode-devtools…
AndyLiner13 Feb 10, 2026
b0b847a
Merge pull request #1 from AndyLiner13/dependabot/npm_and_yarn/dev-de…
AndyLiner13 Feb 10, 2026
4740aea
chore(deps-dev): bump zod
dependabot[bot] Feb 10, 2026
ec2d0ff
Merge pull request #3 from AndyLiner13/dependabot/npm_and_yarn/dev-de…
AndyLiner13 Feb 10, 2026
204edec
refactor: update references from vsctk to vscode-devtools in bridge-c…
AndyLiner13 Feb 10, 2026
96ad335
Merge branch 'main' of https://github.com/AndyLiner13/vscode-devtools…
AndyLiner13 Feb 10, 2026
d3fddb8
refactor: remove legacy performance and network categories
AndyLiner13 Feb 10, 2026
b68ce9b
Refactor console and output panel tools: rename and consolidate funct…
AndyLiner13 Feb 10, 2026
ab6a125
Refactor VS Code DevTools tools and improve console message handling
AndyLiner13 Feb 10, 2026
103cec3
refactor: enhance read_output tool with filtering options and improve…
AndyLiner13 Feb 10, 2026
628cf6e
feat: add tools for listing CDP targets and reading terminal information
AndyLiner13 Feb 11, 2026
a0a5412
Refactor extension watcher and VS Code integration
AndyLiner13 Feb 12, 2026
220572c
feat: implement child process PID registration and unregistration wit…
AndyLiner13 Feb 12, 2026
6860386
feat: add MCP socket server for JSON-RPC communication and implement …
AndyLiner13 Feb 12, 2026
589aecd
refactor: streamline JSON-RPC request handling and enhance bridge met…
AndyLiner13 Feb 12, 2026
7979ab7
refactor: simplify shutdown logic to always detach gracefully and pre…
AndyLiner13 Feb 12, 2026
09c3791
feat: implement hot-reload functionality for extension debug sessions
AndyLiner13 Feb 12, 2026
d58e0d4
feat: enhance logging and error handling across various modules
AndyLiner13 Feb 13, 2026
6fd432c
refactor: disable debugger attachment to prevent extension host freez…
AndyLiner13 Feb 13, 2026
de84da8
feat: enhance build script and improve debugger attachment handling t…
AndyLiner13 Feb 13, 2026
595a8fc
Refactor code structure for improved readability and maintainability
AndyLiner13 Feb 13, 2026
768dee2
fix: ensure intentional CDP disconnect before hot-reload to prevent p…
AndyLiner13 Feb 13, 2026
158b36a
feat: implement single-terminal model tools for command execution and…
AndyLiner13 Feb 13, 2026
c7a0428
feat: add task management tools for VS Code workspace tasks and enhan…
AndyLiner13 Feb 14, 2026
9ee15dc
feat: enhance terminal command execution with timeout and duration tr…
AndyLiner13 Feb 14, 2026
d69f6af
feat: enhance terminal process management with active process trackin…
AndyLiner13 Feb 14, 2026
f5a685f
feat: add process management tools including process ledger, kill pro…
AndyLiner13 Feb 14, 2026
304c95d
feat: integrate LogPare for log consolidation and compression across …
AndyLiner13 Feb 14, 2026
0f5cba4
feat: implement MCP server hot-reload functionality and enhance proce…
AndyLiner13 Feb 14, 2026
1a1de69
feat: add cwd parameter to terminalRun for specifying working directo…
AndyLiner13 Feb 14, 2026
66cd31a
feat: enhance terminal functionality with shell type validation and s…
AndyLiner13 Feb 14, 2026
2dd0bad
feat: remove task management tools and related interfaces from the co…
AndyLiner13 Feb 14, 2026
2ecb15b
feat: remove deprecated process and terminal management tools from th…
AndyLiner13 Feb 14, 2026
85c586e
feat: remove targets tool and integrate CDP targets summary into snap…
AndyLiner13 Feb 14, 2026
5ffd61f
feat: rename terminal_state to read_terminal and enhance output filte…
AndyLiner13 Feb 14, 2026
f553146
feat: update terminal command execution to exclusively use PowerShell…
AndyLiner13 Feb 15, 2026
2bc40dc
feat: add codebase overview tool for structural analysis of the codebase
AndyLiner13 Feb 15, 2026
e56a1bb
feat: update documentation and remove deprecated tools from the codebase
AndyLiner13 Feb 15, 2026
0b89a32
feat: replace hasExtensionChangedSince with isBuildStale for improved…
AndyLiner13 Feb 15, 2026
6175827
feat: implement reconnect logic for CDP service and enhance disconnec…
AndyLiner13 Feb 15, 2026
0847bb6
feat: add codebase exports tool and enhance MCP server reload functio…
AndyLiner13 Feb 15, 2026
daf7892
feat: add codebase trace symbol tool for comprehensive symbol analysis
AndyLiner13 Feb 15, 2026
0d84ae2
feat: add unresolved import indication to symbol location info in tra…
AndyLiner13 Feb 16, 2026
9cf0fe2
feat: enhance hot-reload logic with fallback to mcpReady() on timeout
AndyLiner13 Feb 16, 2026
06fc8a5
feat: enhance codebase trace symbol functionality with maxReferences …
AndyLiner13 Feb 16, 2026
05cbdd3
feat: add find unused symbols tool for identifying potential dead cod…
AndyLiner13 Feb 16, 2026
9a37d16
feat(tests): add comprehensive fixtures and integration tests for MCP…
AndyLiner13 Feb 16, 2026
12134f5
refactor: remove deprecated fixture files and implement new JSON-base…
AndyLiner13 Feb 16, 2026
5e10aca
refactor: remove unused test fixtures and helper files
AndyLiner13 Feb 16, 2026
f5f9052
feat(codebase): introduce codebase mapping and tracing tools
AndyLiner13 Feb 16, 2026
fa252c0
feat: add type hierarchy and import graph functionality to codebase t…
AndyLiner13 Feb 16, 2026
6dbee8a
feat(lint): add duplicate detection functionality to codebase linting…
AndyLiner13 Feb 16, 2026
6162da5
feat(diagnostics): add live diagnostics retrieval and reporting funct…
AndyLiner13 Feb 16, 2026
172cd5f
feat(codebase): enhance codebase mapping with path classification and…
AndyLiner13 Feb 16, 2026
6a334f3
feat(trace): add early validation for symbol parameter and enhance hi…
AndyLiner13 Feb 16, 2026
e1818dc
feat(recovery): implement client pipe recovery handler and ensure ava…
AndyLiner13 Feb 16, 2026
0571cd2
feat(response): add skip ledger functionality to prevent appending pr…
AndyLiner13 Feb 16, 2026
719aed9
feat(recovery): implement deduplication for recovery attempts to prev…
AndyLiner13 Feb 16, 2026
8476680
feat(trace): implement progressive detail reduction and dynamic timeo…
AndyLiner13 Feb 17, 2026
888e43e
feat(codebase-map): enhance file type detection and symbol formatting…
AndyLiner13 Feb 17, 2026
0d3ce3d
feat(codebase-map): simplify symbol formatting by removing detail levels
AndyLiner13 Feb 17, 2026
ad91633
feat(tools): implement dynamic timeout configuration for codebase tools
AndyLiner13 Feb 17, 2026
c129d1c
feat(notification): add showHostNotification function for user alerts
AndyLiner13 Feb 17, 2026
6b63445
refactor: enhance build and hot-reload process
AndyLiner13 Feb 17, 2026
26e38ed
feat(gitignore): add .DS_Store and .devtools/ to ignore list
AndyLiner13 Feb 17, 2026
c891f1d
feat(hot-reload): implement mutex for extension hot-reload to prevent…
AndyLiner13 Feb 17, 2026
8ea03f4
feat(ignore-context): replace buildIgnoreContextJson with readIgnoreC…
AndyLiner13 Feb 17, 2026
131af1e
refactor(codebase-map): simplify parameters and enhance output format…
AndyLiner13 Feb 17, 2026
550a096
feat(file-tools): add file read and edit tools with safety layer
AndyLiner13 Feb 17, 2026
ac3e558
feat(hot-reload): enhance client recovery during extension hot-reload…
AndyLiner13 Feb 17, 2026
90a358e
feat(file-edit): add input validation for edit parameters to prevent …
AndyLiner13 Feb 18, 2026
c0ee565
feat(file-highlight): add fileHighlightReadRange function to highligh…
AndyLiner13 Feb 18, 2026
5601915
feat(file-read): add support for extracting orphaned content and enha…
AndyLiner13 Feb 18, 2026
de2645d
feat(symbol-resolver): enhance symbol matching with quote handling an…
AndyLiner13 Feb 18, 2026
b9ae613
feat(file-structure): introduce unified file structure types and extr…
AndyLiner13 Feb 18, 2026
43e579f
feat(file-read): enhance structured range reading with support for no…
AndyLiner13 Feb 19, 2026
80813ed
Refactor tools and remove deprecated features
AndyLiner13 Feb 19, 2026
8da8146
feat(cli, config, logger, main, file-read, symbol-resolver): remove l…
AndyLiner13 Feb 19, 2026
ef15054
feat(config, cli, lifecycle, host-pipe, tools): update configuration …
AndyLiner13 Feb 19, 2026
0b5ab45
feat(file-read): enhance content formatting with line numbers and imp…
AndyLiner13 Feb 19, 2026
1733656
feat(codebase): add metadata support for file and folder summaries in…
AndyLiner13 Feb 19, 2026
e4de8f8
fix(codebase): correct wording in output message for file detail navi…
AndyLiner13 Feb 19, 2026
f18f2e7
feat(codebase): enhance tree formatting with improved metadata displa…
AndyLiner13 Feb 19, 2026
5cb8c0a
feat(codebase): add ignored property to CodebaseTreeNode and update p…
AndyLiner13 Feb 19, 2026
19f66d3
feat(inspector): implement Streamable HTTP server for MCP Inspector
AndyLiner13 Feb 19, 2026
aeb2ea2
refactor(file): rename FileSymbol and related types to NativeDocument…
AndyLiner13 Feb 19, 2026
417d0b0
feat(file): enhance line classification by implementing recursive sym…
AndyLiner13 Feb 19, 2026
1725c29
feat(file): update edit tool documentation to include Markdown file s…
AndyLiner13 Feb 19, 2026
19dc63e
feat(diff): add inline diff editor for file edits and enhance symbol …
AndyLiner13 Feb 19, 2026
08c0409
feat(symbol-resolver): implement findQualifiedPaths function for sugg…
AndyLiner13 Feb 20, 2026
f15b7a2
refactor: convert exported functions to internal functions for improv…
AndyLiner13 Feb 20, 2026
517a3cb
refactor: remove mcp-server-watcher and implement requestPipeline for…
AndyLiner13 Feb 20, 2026
35d8056
feat(lifecycle): enhance CDP disconnect handling during change checks…
AndyLiner13 Feb 20, 2026
d9bb1c1
Multi-Repo Consolidation
AndyLiner13 Feb 20, 2026
783b124
Added Tests
AndyLiner13 Feb 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
21 changes: 0 additions & 21 deletions .agent/rules/coding.md

This file was deleted.

16 changes: 0 additions & 16 deletions .claude-plugin/marketplace.json

This file was deleted.

11 changes: 0 additions & 11 deletions .claude-plugin/plugin.json

This file was deleted.

5 changes: 5 additions & 0 deletions .copilotignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
documentation/archive/
.devtools/
backups/
test-workspace/
tests/
16 changes: 16 additions & 0 deletions .devtoolsignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Files/folders ignored by vscode-devtools extension change detection.
# Syntax is similar to .gitignore and supports:
# - * and ** globs
# - ! negation (re-include)
# - trailing / for directories

# Build output
out/
build/

# Packaging artifacts
*.vsix

# Optional: ignore generated docs or notes
# docs/generated/
# .devtools/
36 changes: 36 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Instructions

Use the #tool:vscode/askQuestions tool often. Even for simple yes or no questions. If you want to ask how we should proceed, or if we should continue, please use the #tool:vscode/askQuestions tool.

## Rules for TypeScript

- Do not use `any` type.
- Do not use `as` keyword for type casting.
- Do not use `!` operator for type assertion.
- Do not use `// @ts-ignore` comments.
- Do not use `// @ts-nocheck` comments.
- Do not use `// @ts-expect-error` comments.
- Prefer `for..of` instead of `forEach`.

## CRITICAL: No VS Code Proposed APIs

- DO NOT use any VS Code proposed APIs anywhere in the codebase.
- DO NOT add `enabledApiProposals` to any `package.json`.
- DO NOT use the `--enable-proposed-api` CLI flag.
- DO NOT use APIs like `findTextInFiles`, `onDidWriteTerminalData`, or any other proposed API.
- We have NO access to proposed APIs. Using them causes the extension to crash into Safe Mode.
- If a feature requires a proposed API, find an alternative using stable APIs only.

## CRITICAL: Hot Reloading — DO NOT Manually Rebuild

- DO NOT manually run build, compile, install, reinstall, or reload commands.
- DO NOT ask the user to rebuild, reinstall, or reload anything.
- DO NOT run `npm run compile`, `npm run build`, or `ext:reinstall` tasks manually.
- EVERYTHING HAS HOT RELOADING BUILT IN.
- The MCP server automatically detects source changes and rebuilds on the next tool call.
- The Extension Development Host automatically picks up changes.
- Just TEST THE TOOLS DIRECTLY after making code changes.
- If tools aren't available yet, call any MCP tool — it will auto-reload and then work.
- Get straight to testing. Skip all rebuild/reinstall steps. It's all automatic.

ASK QUESTIONS AS OFTEN AS YOU POSSIBLY CAN. DO NOT MAKE ANY ASSUMPTIONS ABOUT THE USERS INTENT OR PREFERENCES. IF THE USER HAS NOT EXPLICITLY PROVIDED CONSENT TO A CHANGE, DO NO PROCEED WITHOUT ASKING FIRST VIA THE #tool:vscode/askQuestions TOOL.
261 changes: 261 additions & 0 deletions .github/instructions/agent-skills.instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,261 @@
---
description: 'Guidelines for creating high-quality Agent Skills for GitHub Copilot'
applyTo: '**/.github/skills/**/SKILL.md, **/.claude/skills/**/SKILL.md'
---

# Agent Skills File Guidelines

Instructions for creating effective and portable Agent Skills that enhance GitHub Copilot with specialized capabilities, workflows, and bundled resources.

## What Are Agent Skills?

Agent Skills are self-contained folders with instructions and bundled resources that teach AI agents specialized capabilities. Unlike custom instructions (which define coding standards), skills enable task-specific workflows that can include scripts, examples, templates, and reference data.

Key characteristics:
- **Portable**: Works across VS Code, Copilot CLI, and Copilot coding agent
- **Progressive loading**: Only loaded when relevant to the user's request
- **Resource-bundled**: Can include scripts, templates, examples alongside instructions
- **On-demand**: Activated automatically based on prompt relevance

## Directory Structure

Skills are stored in specific locations:

| Location | Scope | Recommendation |
|----------|-------|----------------|
| `.github/skills/<skill-name>/` | Project/repository | Recommended for project skills |
| `.claude/skills/<skill-name>/` | Project/repository | Legacy, for backward compatibility |
| `~/.github/skills/<skill-name>/` | Personal (user-wide) | Recommended for personal skills |
| `~/.claude/skills/<skill-name>/` | Personal (user-wide) | Legacy, for backward compatibility |

Each skill **must** have its own subdirectory containing at minimum a `SKILL.md` file.

## Required SKILL.md Format

### Frontmatter (Required)

```yaml
---
name: webapp-testing
description: Toolkit for testing local web applications using Playwright. Use when asked to verify frontend functionality, debug UI behavior, capture browser screenshots, check for visual regressions, or view browser console logs. Supports Chrome, Firefox, and WebKit browsers.
license: Complete terms in LICENSE.txt
---
```

| Field | Required | Constraints |
|-------|----------|-------------|
| `name` | Yes | Lowercase, hyphens for spaces, max 64 characters (e.g., `webapp-testing`) |
| `description` | Yes | Clear description of capabilities AND use cases, max 1024 characters |
| `license` | No | Reference to LICENSE.txt (e.g., `Complete terms in LICENSE.txt`) or SPDX identifier |

### Description Best Practices

**CRITICAL**: The `description` field is the PRIMARY mechanism for automatic skill discovery. Copilot reads ONLY the `name` and `description` to decide whether to load a skill. If your description is vague, the skill will never be activated.

**What to include in description:**
1. **WHAT** the skill does (capabilities)
2. **WHEN** to use it (specific triggers, scenarios, file types, or user requests)
3. **Keywords** that users might mention in their prompts

**Good description:**
```yaml
description: Toolkit for testing local web applications using Playwright. Use when asked to verify frontend functionality, debug UI behavior, capture browser screenshots, check for visual regressions, or view browser console logs. Supports Chrome, Firefox, and WebKit browsers.
```

**Poor description:**
```yaml
description: Web testing helpers
```

The poor description fails because:
- No specific triggers (when should Copilot load this?)
- No keywords (what user prompts would match?)
- No capabilities (what can it actually do?)

### Body Content

The body contains detailed instructions that Copilot loads AFTER the skill is activated. Recommended sections:

| Section | Purpose |
|---------|---------|
| `# Title` | Brief overview of what this skill enables |
| `## When to Use This Skill` | List of scenarios (reinforces description triggers) |
| `## Prerequisites` | Required tools, dependencies, environment setup |
| `## Step-by-Step Workflows` | Numbered steps for common tasks |
| `## Troubleshooting` | Common issues and solutions table |
| `## References` | Links to bundled docs or external resources |

## Bundling Resources

Skills can include additional files that Copilot accesses on-demand:

### Supported Resource Types

| Folder | Purpose | Loaded into Context? | Example Files |
|--------|---------|---------------------|---------------|
| `scripts/` | Executable automation that performs specific operations | When executed | `helper.py`, `validate.sh`, `build.ts` |
| `references/` | Documentation the AI agent reads to inform decisions | Yes, when referenced | `api_reference.md`, `schema.md`, `workflow_guide.md` |
| `assets/` | **Static files used AS-IS** in output (not modified by the AI agent) | No | `logo.png`, `brand-template.pptx`, `custom-font.ttf` |
| `templates/` | **Starter code/scaffolds that the AI agent MODIFIES** and builds upon | Yes, when referenced | `viewer.html` (insert algorithm), `hello-world/` (extend) |

### Directory Structure Example

```
.github/skills/my-skill/
├── SKILL.md # Required: Main instructions
├── LICENSE.txt # Recommended: License terms (Apache 2.0 typical)
├── scripts/ # Optional: Executable automation
│ ├── helper.py # Python script
│ └── helper.ps1 # PowerShell script
├── references/ # Optional: Documentation loaded into context
│ ├── api_reference.md
│ ├── workflow-setup.md # Detailed workflow (>5 steps)
│ └── workflow-deployment.md
├── assets/ # Optional: Static files used AS-IS in output
│ ├── baseline.png # Reference image for comparison
│ └── report-template.html
└── templates/ # Optional: Starter code the AI agent modifies
├── scaffold.py # Code scaffold the AI agent customizes
└── config.template # Config template the AI agent fills in
```

> **LICENSE.txt**: When creating a skill, download the Apache 2.0 license text from https://www.apache.org/licenses/LICENSE-2.0.txt and save as `LICENSE.txt`. Update the copyright year and owner in the appendix section.

### Assets vs Templates: Key Distinction

**Assets** are static resources **consumed unchanged** in the output:
- A `logo.png` that gets embedded into a generated document
- A `report-template.html` copied as output format
- A `custom-font.ttf` applied to text rendering

**Templates** are starter code/scaffolds that **the AI agent actively modifies**:
- A `scaffold.py` where the AI agent inserts logic
- A `config.template` where the AI agent fills in values based on user requirements
- A `hello-world/` project directory that the AI agent extends with new features

**Rule of thumb**: If the AI agent reads and builds upon the file content → `templates/`. If the file is used as-is in output → `assets/`.

### Referencing Resources in SKILL.md

Use relative paths to reference files within the skill directory:

```markdown
## Available Scripts

Run the [helper script](./scripts/helper.py) to automate common tasks.

See [API reference](./references/api_reference.md) for detailed documentation.

Use the [scaffold](./templates/scaffold.py) as a starting point.
```

## Progressive Loading Architecture

Skills use three-level loading for efficiency:

| Level | What Loads | When |
|-------|------------|------|
| 1. Discovery | `name` and `description` only | Always (lightweight metadata) |
| 2. Instructions | Full `SKILL.md` body | When request matches description |
| 3. Resources | Scripts, examples, docs | Only when Copilot references them |

This means:
- Install many skills without consuming context
- Only relevant content loads per task
- Resources don't load until explicitly needed

## Content Guidelines

### Writing Style

- Use imperative mood: "Run", "Create", "Configure" (not "You should run")
- Be specific and actionable
- Include exact commands with parameters
- Show expected outputs where helpful
- Keep sections focused and scannable

### Script Requirements

When including scripts, prefer cross-platform languages:

| Language | Use Case |
|----------|----------|
| Python | Complex automation, data processing |
| pwsh | PowerShell Core scripting |
| Node.js | JavaScript-based tooling |
| Bash/Shell | Simple automation tasks |

Best practices:
- Include help/usage documentation (`--help` flag)
- Handle errors gracefully with clear messages
- Avoid storing credentials or secrets
- Use relative paths where possible

### When to Bundle Scripts

Include scripts in your skill when:
- The same code would be rewritten repeatedly by the agent
- Deterministic reliability is critical (e.g., file manipulation, API calls)
- Complex logic benefits from being pre-tested rather than generated each time
- The operation has a self-contained purpose that can evolve independently
- Testability matters — scripts can be unit tested and validated
- Predictable behavior is preferred over dynamic generation

Scripts enable evolution: even simple operations benefit from being implemented as scripts when they may grow in complexity, need consistent behavior across invocations, or require future extensibility.

### Security Considerations

- Scripts rely on existing credential helpers (no credential storage)
- Include `--force` flags only for destructive operations
- Warn users before irreversible actions
- Document any network operations or external calls

## Common Patterns

### Parameter Table Pattern

Document parameters clearly:

```markdown
| Parameter | Required | Default | Description |
|-----------|----------|---------|-------------|
| `--input` | Yes | - | Input file or URL to process |
| `--action` | Yes | - | Action to perform |
| `--verbose` | No | `false` | Enable verbose output |
```

## Validation Checklist

Before publishing a skill:

- [ ] `SKILL.md` has valid frontmatter with `name` and `description`
- [ ] `name` is lowercase with hyphens, ≤64 characters
- [ ] `description` clearly states **WHAT** it does, **WHEN** to use it, and relevant **KEYWORDS**
- [ ] Body includes when to use, prerequisites, and step-by-step workflows
- [ ] SKILL.md body kept under 500 lines (split large content into `references/` folder)
- [ ] Large workflows (>5 steps) split into `references/` folder with clear links from SKILL.md
- [ ] Scripts include help documentation and error handling
- [ ] Relative paths used for all resource references
- [ ] No hardcoded credentials or secrets

## Workflow Execution Pattern

When executing multi-step workflows, create a TODO list where each step references the relevant documentation:

```markdown
## TODO
- [ ] Step 1: Configure environment - see [workflow-setup.md](./references/workflow-setup.md#environment)
- [ ] Step 2: Build project - see [workflow-setup.md](./references/workflow-setup.md#build)
- [ ] Step 3: Deploy to staging - see [workflow-deployment.md](./references/workflow-deployment.md#staging)
- [ ] Step 4: Run validation - see [workflow-deployment.md](./references/workflow-deployment.md#validation)
- [ ] Step 5: Deploy to production - see [workflow-deployment.md](./references/workflow-deployment.md#production)
```

This ensures traceability and allows resuming workflows if interrupted.

## Related Resources

- [Agent Skills Specification](https://agentskills.io/)
- [VS Code Agent Skills Documentation](https://code.visualstudio.com/docs/copilot/customization/agent-skills)
- [Reference Skills Repository](https://github.com/anthropics/skills)
- [Awesome Copilot Skills](https://github.com/github/awesome-copilot/blob/main/docs/README.skills.md)
Loading
Loading