1+ name : Copilot Configuration Validation
2+
3+ on :
4+ push :
5+ branches : [ "main", "develop" ]
6+ paths :
7+ - ' .github/copilot-instructions.md'
8+ - ' .copilot/**'
9+ - ' .github/copilot-mcp.json'
10+ pull_request :
11+ branches : [ "main" ]
12+ paths :
13+ - ' .github/copilot-instructions.md'
14+ - ' .copilot/**'
15+ - ' .github/copilot-mcp.json'
16+
17+ jobs :
18+ validate-copilot-config :
19+ runs-on : ubuntu-latest
20+ name : Validate Copilot Configuration
21+
22+ steps :
23+ - name : Checkout
24+ uses : actions/checkout@v4
25+
26+ - name : Setup Node.js
27+ uses : actions/setup-node@v4
28+ with :
29+ node-version : 20
30+ cache : ' npm'
31+
32+ - name : Install dependencies
33+ run : npm ci
34+
35+ - name : Validate configuration files exist
36+ run : |
37+ echo "Checking for required Copilot configuration files..."
38+
39+ # Check for repository instructions
40+ if [ ! -f ".github/copilot-instructions.md" ]; then
41+ echo "❌ Missing .github/copilot-instructions.md"
42+ exit 1
43+ else
44+ echo "✅ Found .github/copilot-instructions.md"
45+ fi
46+
47+ # Check for custom instructions
48+ if [ ! -f ".copilot/instructions.md" ]; then
49+ echo "❌ Missing .copilot/instructions.md"
50+ exit 1
51+ else
52+ echo "✅ Found .copilot/instructions.md"
53+ fi
54+
55+ # Check for development environment config
56+ if [ ! -f ".copilot/dev-environment.yml" ]; then
57+ echo "❌ Missing .copilot/dev-environment.yml"
58+ exit 1
59+ else
60+ echo "✅ Found .copilot/dev-environment.yml"
61+ fi
62+
63+ # Check for MCP configuration
64+ if [ ! -f ".github/copilot-mcp.json" ]; then
65+ echo "❌ Missing .github/copilot-mcp.json"
66+ exit 1
67+ else
68+ echo "✅ Found .github/copilot-mcp.json"
69+ fi
70+
71+ - name : Validate JSON configuration files
72+ run : |
73+ echo "Validating JSON configuration files..."
74+
75+ # Validate MCP configuration JSON
76+ if ! jq empty .github/copilot-mcp.json; then
77+ echo "❌ Invalid JSON in .github/copilot-mcp.json"
78+ exit 1
79+ else
80+ echo "✅ Valid JSON in .github/copilot-mcp.json"
81+ fi
82+
83+ - name : Validate YAML configuration files
84+ run : |
85+ echo "Validating YAML configuration files..."
86+
87+ # Install yq for YAML validation
88+ sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
89+ sudo chmod +x /usr/local/bin/yq
90+
91+ # Validate development environment YAML
92+ if ! yq eval . .copilot/dev-environment.yml > /dev/null; then
93+ echo "❌ Invalid YAML in .copilot/dev-environment.yml"
94+ exit 1
95+ else
96+ echo "✅ Valid YAML in .copilot/dev-environment.yml"
97+ fi
98+
99+ - name : Validate project still builds
100+ run : |
101+ echo "Ensuring project builds successfully with current configuration..."
102+ npm run build
103+
104+ - name : Validate linting passes
105+ run : |
106+ echo "Ensuring linting passes with current configuration..."
107+ npm run lint
108+
109+ - name : Check configuration completeness
110+ run : |
111+ echo "Checking configuration completeness..."
112+
113+ # Check if copilot-instructions.md contains required sections
114+ if ! grep -q "## Project Overview" .github/copilot-instructions.md; then
115+ echo "❌ Missing Project Overview section in copilot-instructions.md"
116+ exit 1
117+ fi
118+
119+ if ! grep -q "Technology Stack" .github/copilot-instructions.md; then
120+ echo "❌ Missing Technology Stack section in copilot-instructions.md"
121+ exit 1
122+ fi
123+
124+ if ! grep -q "Development Guidelines" .github/copilot-instructions.md; then
125+ echo "❌ Missing Development Guidelines section in copilot-instructions.md"
126+ exit 1
127+ fi
128+
129+ # Check if custom instructions contain key principles
130+ if ! grep -q "Design Engineering Principles" .copilot/instructions.md; then
131+ echo "❌ Missing Design Engineering Principles in .copilot/instructions.md"
132+ exit 1
133+ fi
134+
135+ if ! grep -q "Technology Preferences" .copilot/instructions.md; then
136+ echo "❌ Missing Technology Preferences in .copilot/instructions.md"
137+ exit 1
138+ fi
139+
140+ # Check if MCP config has required structure
141+ if ! jq -e '.mcp.servers' .github/copilot-mcp.json > /dev/null; then
142+ echo "❌ Missing MCP servers configuration"
143+ exit 1
144+ fi
145+
146+ if ! jq -e '.context' .github/copilot-mcp.json > /dev/null; then
147+ echo "❌ Missing context configuration in MCP"
148+ exit 1
149+ fi
150+
151+ echo "✅ All configuration completeness checks passed"
152+
153+ - name : Report validation success
154+ run : |
155+ echo "🎉 All Copilot configuration validation checks passed!"
156+ echo "The repository is properly configured for GitHub Copilot coding agent."
0 commit comments