Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
c4f4632
docs: add VS Code extension implementation plan
Mar 24, 2026
9657148
feat(extension): add extension scaffold for VS Code Chat extension
coatsy Mar 27, 2026
7d1f7a6
feat(gitignore): add .copilot-tracking to ignore list
coatsy Mar 27, 2026
dfea730
update the icon to be visible in the extensions list
coatsy Mar 27, 2026
51de8be
feat(gitignore): add .DS_Store to ignore list for macOS
coatsy Mar 27, 2026
d8b4dca
feat(adr): add architecture decision record for artifact file strategy
coatsy Mar 27, 2026
5856253
feat(extension): add transient build-time artifact discovery and regi…
coatsy Mar 27, 2026
4f5fd27
feat(extension): add path resolution, CI pipeline, and README
coatsy Mar 27, 2026
b4f0c3b
fix(build): bump CI node version to 20 for vsce compatibility
coatsy Mar 27, 2026
55da716
fix(extension): strip YAML frontmatter from README at build time
coatsy Mar 27, 2026
b68a654
docs: add VS Code extension documentation and update guides
coatsy Mar 27, 2026
a1ecce4
docs: update Node.js version requirement from 18+ to 20+
coatsy Mar 27, 2026
1474599
docs(extension): add local dev host setup and debug configuration
coatsy Mar 28, 2026
02b5728
chore: add .gitignore entries for dev host dirs and ADR-002
coatsy Mar 28, 2026
af0c7de
feat: add CI shell lint job and .vscode/launch.json debug configs
coatsy Mar 28, 2026
a6c8313
feat: add ShellCheck CI step and .vscode/tasks.json build tasks
coatsy Mar 28, 2026
2da61ec
chore: sync DEBUG_CONFIG.md with launch.json and add .shellcheckrc
coatsy Mar 28, 2026
92e14e7
chore: add .gitattributes for LF enforcement and shell lint docs
coatsy Mar 28, 2026
9bd81ba
feat(extension): add Windows platform detection to setup-devhost.sh
coatsy Mar 28, 2026
1d115b8
fix(extension): fix macOS usage() output and remove invalid shellchec…
coatsy Mar 28, 2026
32d1970
chore: update Node.js version requirement from 20+ to 22+
coatsy Mar 28, 2026
f332b65
chore: add .nvmrc with Node.js 22
coatsy Mar 28, 2026
c1b1d18
fix(extension): migrate dev host from yarn to npm
coatsy Mar 28, 2026
86f1342
feat(extension): add Node.js version cross-check in setup-devhost.sh
coatsy Mar 28, 2026
9f0889a
docs(extension): document dev host pitfalls and add EXTENSIONS_DIR su…
coatsy Mar 28, 2026
f731761
feat(workflows): add VSIX content validation step to CI
coatsy Mar 28, 2026
86419a1
feat(workflows): add macOS runner to lint-scripts CI job
coatsy Mar 28, 2026
a4cde95
fix(extension): add Git LFS requirement and fix Windows path bug
coatsy Mar 28, 2026
84be609
docs(extension): document VS 2022 Build Tools and Spectre libs requir…
coatsy Mar 28, 2026
212d221
feat(extension): set VS Code Marketplace publisher to coatsy
coatsy Mar 30, 2026
04d90e3
feat(extension): add extension icon from logo file
coatsy Mar 30, 2026
e7681e2
chore(extension): add source logo files
coatsy Mar 30, 2026
a5f01e6
dummy
coatsy Mar 30, 2026
b41f02d
chore: remove accidental dummy file
coatsy Mar 30, 2026
54d0f3a
feat(extension-pack): create Copilot Studio Development Bundle
coatsy Mar 30, 2026
31be482
feat(extension-pack): add distinct bundle icon and packaging script
coatsy Mar 30, 2026
ee43bff
chore: add dev host and build artifacts to .gitignore
coatsy Mar 30, 2026
97aaff1
feat(workflows): add CI/CD publish workflow and marketplace metadata
coatsy Mar 30, 2026
dbfb377
feat(workflows): build and publish both skills extension and bundle
coatsy Mar 30, 2026
d946698
feat(workflows): build and publish both skills extension and bundle
coatsy Mar 30, 2026
0d75add
fix(extension): resolve Marketplace listing issues for frontmatter, m…
coatsy Mar 31, 2026
448b8e3
chore(extension): bump extension and bundle version to 0.1.1
coatsy Mar 31, 2026
c27e37f
reorder some thins in .gitignore
coatsy Mar 31, 2026
4b74d3a
docs(blog): add Tech Community blog post for extension and bundle
coatsy Mar 31, 2026
32c5ea3
re-orient the blog post architecture diagram for better readability
coatsy Apr 1, 2026
f4bb49d
More updates to architecture diagram - include skills with agents
coatsy Apr 1, 2026
741c195
fix(agents): add missing skill declarations to agent frontmatter
coatsy Apr 1, 2026
c57c819
Revert "fix(agents): add missing skill declarations to agent frontmat…
coatsy Apr 1, 2026
431fb21
fix(extension): auto-discover and inject skill declarations during build
coatsy Apr 1, 2026
d6b1567
feat(extension): add build-time validation for skill references
coatsy Apr 1, 2026
f065e7b
fix(build): use Git Bash for VS Code tasks and add sub-command valida…
coatsy Apr 1, 2026
c779a70
chore(extension): add node prerequisite check and bump version to 0.1.2
coatsy Apr 1, 2026
09e23b0
docs(extension): add CHANGELOG.md with 0.1.2 release notes
coatsy Apr 1, 2026
d13698a
chore: apply mcs.metadata format to MCP action YAML files
coatsy Apr 5, 2026
4ed6934
chore(templates): align connector action template metadata
coatsy Apr 10, 2026
6f5dc78
fix(build): resolve skill-local CLAUDE_SKILL_DIR path references
coatsy Apr 16, 2026
0f34572
feat(workflows): add upstream sync and improve path resolution checks
coatsy Apr 16, 2026
6e6b048
chore(extension): bump version to 0.1.3
coatsy Apr 16, 2026
c26ba5c
docs(extension): add upstream changes to 0.1.3 changelog
coatsy Apr 16, 2026
7d93f8d
fix(extension): update skills count from 24 to 28 in README (#27)
coatsy Apr 16, 2026
03ebb5d
chore(extension): bump version to 0.1.4 (#28)
coatsy Apr 16, 2026
274558f
feat(workflows): add upstream release monitoring and version sync
coatsy Apr 23, 2026
27cddd4
feat(workflows): add upstream badge, failure notifications
coatsy Apr 23, 2026
7cd8c9c
feat(workflows): auto-close failure issues, enhance sync PR body
coatsy Apr 23, 2026
437b40b
feat(workflows): pass upstream version to sync-upstream dispatch
coatsy Apr 23, 2026
8ee8c2f
feat(build): synchronize extension version with upstream releases
coatsy Apr 23, 2026
960c65c
feat(workflows): auto version bump PR and sync release workflow
coatsy Apr 23, 2026
966bdfa
feat(workflows): auto changelog entry and version consistency check
coatsy Apr 23, 2026
aea98e2
build(workflows): add upstream-version.json to build trigger paths
coatsy Apr 23, 2026
174079c
Update .github/workflows/check-upstream-release.yml
coatsy Apr 23, 2026
9ad4ec1
Update .github/workflows/check-upstream-release.yml
coatsy Apr 23, 2026
4d7eed4
Update .github/workflows/check-upstream-release.yml
coatsy Apr 23, 2026
2830ad4
Update .github/workflows/check-upstream-release.yml
coatsy Apr 23, 2026
f408928
Update .github/workflows/publish-extension.yml
coatsy Apr 23, 2026
1c8aca7
fix(workflows): export SKILLS_VERSION to GITHUB_ENV for cross-step ac…
coatsy Apr 23, 2026
de293bc
release(v1.0.9): bump version and update documentation for upstream W…
coatsy Apr 30, 2026
de068d0
release(v1.0.10): bump version and update changelog for upstream W18 …
coatsy May 13, 2026
2431e7e
release(v1.0.11): bump version and update changelog for upstream W19 …
coatsy May 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Default: auto-detect and normalize to LF in the repo
* text=auto

# Shell scripts must use LF everywhere (including Windows checkout)
*.sh text eol=lf
.shellcheckrc text eol=lf

# Batch files must use CRLF
*.bat text eol=crlf
*.cmd text eol=crlf
2 changes: 2 additions & 0 deletions .github/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ changelog:
labels: ["type/feature"]
- title: "Bug Fixes"
labels: ["type/fix"]
- title: "Upstream Sync"
labels: ["upstream/sync"]
- title: "Documentation"
labels: ["type/docs"]
- title: "Infrastructure & Evals"
Expand Down
185 changes: 185 additions & 0 deletions .github/workflows/build-extension.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
name: Build Extension

on:
push:
branches: [main, coatsy/vscode-extension]
paths:
- 'agents/**'
- 'skills/**'
- 'scripts/**'
- 'templates/**'
- 'reference/**'
- 'extension/**'
- 'extension-pack/**'
- 'upstream-version.json'
- '.github/workflows/build-extension.yml'
pull_request:
branches: [main, coatsy/vscode-extension]
paths:
- 'agents/**'
- 'skills/**'
- 'scripts/**'
- 'templates/**'
- 'reference/**'
- 'extension/**'
- 'extension-pack/**'
- 'upstream-version.json'
- '.github/workflows/build-extension.yml'
workflow_dispatch:
inputs:
version:
description: 'Version override (e.g. 0.2.0). Leave empty to use package.template.json version.'
required: false
type: string

jobs:
lint-scripts:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v4

- name: Install ShellCheck (macOS)
if: runner.os == 'macOS'
run: brew install shellcheck

- name: Validate shell script syntax
run: |
errors=0
for script in extension/*.sh extension-pack/*.sh; do
echo "Checking $script..."
if ! bash -n "$script"; then
errors=$((errors + 1))
fi
done
if [ "$errors" -gt 0 ]; then
echo "ERROR: $errors script(s) have syntax errors"
exit 1
fi

- name: Run ShellCheck
run: |
errors=0
for script in extension/*.sh extension-pack/*.sh; do
echo "Checking $script..."
if ! shellcheck --severity=warning "$script"; then
errors=$((errors + 1))
fi
done
if [ "$errors" -gt 0 ]; then
echo "ERROR: ShellCheck found issues in $errors script(s)"
exit 1
fi

build:
runs-on: ubuntu-latest
needs: lint-scripts
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: '22'

- name: Override version
if: inputs.version != ''
run: |
cd extension/templates
node -e "
const fs = require('fs');
const pkg = JSON.parse(fs.readFileSync('package.template.json', 'utf8'));
pkg.version = '${{ inputs.version }}';
fs.writeFileSync('package.template.json', JSON.stringify(pkg, null, 2) + '\n');
console.log('Version set to: ' + pkg.version);
"

- name: Build extension
run: bash extension/test-local.sh --package-only
env:
CODE_CMD: 'true' # Skip VS Code install in CI

- name: Verify VSIX artifact
run: |
VSIX=$(ls -t extension/*.vsix 2>/dev/null | head -1)
if [ -z "$VSIX" ]; then
echo "ERROR: No .vsix file produced"
exit 1
fi
echo "Built: $VSIX"
echo "Size: $(du -h "$VSIX" | cut -f1)"

- name: Validate VSIX contents
run: |
STAGE_DIR="extension/.staging"

# Verify package.json has agents and skills
AGENTS=$(node -e "const p=require('./$STAGE_DIR/package.json'); console.log((p.contributes?.chatAgents||[]).length)")
SKILLS=$(node -e "const p=require('./$STAGE_DIR/package.json'); console.log((p.contributes?.chatSkills||[]).length)")
echo "Agents: $AGENTS, Skills: $SKILLS"

if [ "$AGENTS" -lt 1 ]; then
echo "ERROR: No agents discovered"
exit 1
fi
if [ "$SKILLS" -lt 1 ]; then
echo "ERROR: No skills discovered"
exit 1
fi

# Verify no Claude-specific frontmatter fields remain
if grep -r 'allowed-tools\|CLAUDE_SKILL_DIR\|user-invocable' "$STAGE_DIR/skills/" 2>/dev/null; then
echo "ERROR: Claude-specific fields found in staged skills"
exit 1
fi

# Verify path resolution handled all CLAUDE_SKILL_DIR variants
# Check for repo-root-relative (../../) and skill-local (./) patterns
echo "Checking resolved paths..."
UNRESOLVED=$(grep -rn '\${CLAUDE_SKILL_DIR}' "$STAGE_DIR/" 2>/dev/null || true)
if [ -n "$UNRESOLVED" ]; then
echo "ERROR: Unresolved CLAUDE_SKILL_DIR references:"
echo "$UNRESOLVED"
exit 1
fi
echo " All CLAUDE_SKILL_DIR paths resolved"

# Verify essential directories exist
for dir in agents skills scripts templates reference; do
if [ ! -d "$STAGE_DIR/$dir" ]; then
echo "ERROR: Missing directory: $dir"
exit 1
fi
done

echo "VSIX validation passed: $AGENTS agents, $SKILLS skills"

- name: Upload skills extension VSIX
uses: actions/upload-artifact@v4
with:
name: copilot-studio-skills-vsix
path: extension/*.vsix
retention-days: 30

- name: Build extension pack
run: bash extension-pack/build.sh --package-only
env:
CODE_CMD: 'true'

- name: Verify extension pack VSIX
run: |
VSIX=$(ls -t extension-pack/*.vsix 2>/dev/null | head -1)
if [ -z "$VSIX" ]; then
echo "ERROR: No extension pack .vsix file produced"
exit 1
fi
echo "Built: $VSIX"
echo "Size: $(du -h "$VSIX" | cut -f1)"

- name: Upload extension pack VSIX
uses: actions/upload-artifact@v4
with:
name: copilot-studio-bundle-vsix
path: extension-pack/*.vsix
retention-days: 30
Loading
Loading