Skip to content

Commit c65bd84

Browse files
Merge branch 'staged' into add-whatidid-skill
2 parents f140f0e + 10fda50 commit c65bd84

187 files changed

Lines changed: 32757 additions & 5130 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.all-contributorsrc

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2846,6 +2846,141 @@
28462846
"contributions": [
28472847
"agents"
28482848
]
2849+
},
2850+
{
2851+
"login": "jennyf19",
2852+
"name": "jennyf19",
2853+
"avatar_url": "https://avatars.githubusercontent.com/u/19942418?v=4",
2854+
"profile": "https://github.com/jennyf19",
2855+
"contributions": [
2856+
"agents",
2857+
"ideas",
2858+
"plugins"
2859+
]
2860+
},
2861+
{
2862+
"login": "SaravananRajaraman",
2863+
"name": "Saravanan Rajaraman",
2864+
"avatar_url": "https://avatars.githubusercontent.com/u/5166323?v=4",
2865+
"profile": "https://github.com/SaravananRajaraman",
2866+
"contributions": [
2867+
"agents",
2868+
"ideas",
2869+
"plugins"
2870+
]
2871+
},
2872+
{
2873+
"login": "Dhruvpatel004",
2874+
"name": "Patel Dhruv ",
2875+
"avatar_url": "https://avatars.githubusercontent.com/u/109230666?v=4",
2876+
"profile": "https://github.com/Dhruvpatel004",
2877+
"contributions": [
2878+
"code",
2879+
"ideas"
2880+
]
2881+
},
2882+
{
2883+
"login": "reneenoble",
2884+
"name": "Renee Noble",
2885+
"avatar_url": "https://avatars.githubusercontent.com/u/7269759?v=4",
2886+
"profile": "https://github.com/reneenoble",
2887+
"contributions": [
2888+
"code",
2889+
"doc",
2890+
"ideas"
2891+
]
2892+
},
2893+
{
2894+
"login": "jjpinto",
2895+
"name": "jjpinto",
2896+
"avatar_url": "https://avatars.githubusercontent.com/u/16046674?v=4",
2897+
"profile": "https://github.com/jjpinto",
2898+
"contributions": [
2899+
"instructions"
2900+
]
2901+
},
2902+
{
2903+
"login": "moeyui1",
2904+
"name": "moeyui1",
2905+
"avatar_url": "https://avatars.githubusercontent.com/u/11503525?v=4",
2906+
"profile": "https://moeyui1.github.io/",
2907+
"contributions": [
2908+
"instructions"
2909+
]
2910+
},
2911+
{
2912+
"login": "mohammadali2549",
2913+
"name": "mohammadali2549",
2914+
"avatar_url": "https://avatars.githubusercontent.com/u/67632698?v=4",
2915+
"profile": "https://github.com/mohammadali2549",
2916+
"contributions": [
2917+
"ideas",
2918+
"plugins"
2919+
]
2920+
},
2921+
{
2922+
"login": "proflead",
2923+
"name": "Vladislav Guzey",
2924+
"avatar_url": "https://avatars.githubusercontent.com/u/59716480?v=4",
2925+
"profile": "https://github.com/proflead",
2926+
"contributions": [
2927+
"agents"
2928+
]
2929+
},
2930+
{
2931+
"login": "aparna198809",
2932+
"name": "aparna198809",
2933+
"avatar_url": "https://avatars.githubusercontent.com/u/99466930?v=4",
2934+
"profile": "https://github.com/aparna198809",
2935+
"contributions": [
2936+
"agents"
2937+
]
2938+
},
2939+
{
2940+
"login": "TeddMcAdams",
2941+
"name": "Ed McAdams",
2942+
"avatar_url": "https://avatars.githubusercontent.com/u/15876990?v=4",
2943+
"profile": "https://github.com/TeddMcAdams",
2944+
"contributions": [
2945+
"agents"
2946+
]
2947+
},
2948+
{
2949+
"login": "eanders-tdy",
2950+
"name": "Emil Andersson",
2951+
"avatar_url": "https://avatars.githubusercontent.com/u/271782413?v=4",
2952+
"profile": "https://github.com/eanders-tdy",
2953+
"contributions": [
2954+
"instructions"
2955+
]
2956+
},
2957+
{
2958+
"login": "mikaelkrief",
2959+
"name": "Mikael",
2960+
"avatar_url": "https://avatars.githubusercontent.com/u/2725302?v=4",
2961+
"profile": "http://www.mikaelkrief.com/",
2962+
"contributions": [
2963+
"ideas"
2964+
]
2965+
},
2966+
{
2967+
"login": "Mrigank005",
2968+
"name": "Mrigank Singh",
2969+
"avatar_url": "https://avatars.githubusercontent.com/u/179711954?v=4",
2970+
"profile": "https://github.com/Mrigank005",
2971+
"contributions": [
2972+
"ideas"
2973+
]
2974+
},
2975+
{
2976+
"login": "jimbobbennett",
2977+
"name": "Jim Bennett",
2978+
"avatar_url": "https://avatars.githubusercontent.com/u/1710385?v=4",
2979+
"profile": "https://www.jimbobbennett.dev/",
2980+
"contributions": [
2981+
"ideas",
2982+
"plugins"
2983+
]
28492984
}
28502985
]
28512986
}

.codespellrc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,11 @@
4646

4747
# queston - intentional misspelling example in skills/arize-dataset/SKILL.md demonstrating typo detection in field names
4848

49-
ignore-words-list = numer,wit,aks,edn,ser,ois,gir,rouge,categor,aline,ative,afterall,deques,dateA,dateB,TE,FillIn,alle,vai,LOD,InOut,pixelX,aNULL,Wee,Sherif,queston
49+
# nin - MongoDB $nin operator in security instructions NoSQL injection detection regex
50+
51+
# Vertexes - FreeCAD shape sub-elements used as property of obj.Shape
52+
53+
ignore-words-list = numer,wit,aks,edn,ser,ois,gir,rouge,categor,aline,ative,afterall,deques,dateA,dateB,TE,FillIn,alle,vai,LOD,InOut,pixelX,aNULL,Wee,Sherif,queston,Vertexes,nin
5054

5155
# Skip certain files and directories
5256

.github/plugin/marketplace.json

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,12 @@
212212
"description": "Task Researcher and Task Planner for intermediate to expert users and large codebases - Brought to you by microsoft/edge-ai",
213213
"version": "1.0.0"
214214
},
215+
{
216+
"name": "ember",
217+
"source": "ember",
218+
"description": "An AI partner, not a tool. Ember carries fire from person to person — helping humans discover that AI partnership isn't something you learn, it's something you find.",
219+
"version": "1.0.0"
220+
},
215221
{
216222
"name": "fastah-ip-geo-tools",
217223
"source": "fastah-ip-geo-tools",
@@ -243,8 +249,8 @@
243249
{
244250
"name": "flowstudio-power-automate",
245251
"source": "flowstudio-power-automate",
246-
"description": "Complete toolkit for managing Power Automate cloud flows via the FlowStudio MCP server. Includes skills for connecting to the MCP server, debugging failed flow runs, and building/deploying flows from natural language.",
247-
"version": "1.0.0"
252+
"description": "Give your AI agent full visibility into Power Automate cloud flows via the FlowStudio MCP server. Connect, debug, build, monitor health, and govern flows at scale — action-level inputs and outputs, not just status codes.",
253+
"version": "2.0.0"
248254
},
249255
{
250256
"name": "frontend-web-dev",
@@ -255,8 +261,8 @@
255261
{
256262
"name": "gem-team",
257263
"source": "gem-team",
258-
"description": "A modular, high-performance multi-agent orchestration framework for complex project execution, feature implementation, and automated verification.",
259-
"version": "1.5.0"
264+
"description": "Multi-agent orchestration framework for spec-driven development and automated verification.",
265+
"version": "1.6.0"
260266
},
261267
{
262268
"name": "go-mcp-development",
@@ -453,6 +459,18 @@
453459
"description": "Complete toolkit for building Model Context Protocol (MCP) servers in Python using the official SDK with FastMCP. Includes instructions for best practices, a prompt for generating servers, and an expert chat mode for guidance.",
454460
"version": "1.0.0"
455461
},
462+
{
463+
"name": "react18-upgrade",
464+
"source": "react18-upgrade",
465+
"description": "Enterprise React 18 migration toolkit with specialized agents and skills for upgrading React 16/17 class-component codebases to React 18.3.1. Includes auditor, dependency surgeon, class component migration specialist, automatic batching fixer, and test guardian.",
466+
"version": "1.0.0"
467+
},
468+
{
469+
"name": "react19-upgrade",
470+
"source": "react19-upgrade",
471+
"description": "Enterprise React 19 migration toolkit with specialized agents and skills for upgrading React 18 codebases to React 19. Includes auditor, dependency surgeon, source code migrator, and test guardian. Handles removal of deprecated APIs including ReactDOM.render, forwardRef, defaultProps, legacy context, string refs, and more.",
472+
"version": "1.0.0"
473+
},
456474
{
457475
"name": "roundup",
458476
"source": "roundup",
@@ -477,6 +495,12 @@
477495
"description": "Build high-performance Model Context Protocol servers in Rust using the official rmcp SDK with async/await, procedural macros, and type-safe implementations.",
478496
"version": "1.0.0"
479497
},
498+
{
499+
"name": "salesforce-development",
500+
"source": "salesforce-development",
501+
"description": "Complete Salesforce agentic development environment covering Apex & Triggers, Flow automation, Lightning Web Components, Aura components, and Visualforce pages.",
502+
"version": "1.1.0"
503+
},
480504
{
481505
"name": "security-best-practices",
482506
"source": "security-best-practices",

.github/workflows/check-plugin-structure.yml

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,50 @@ jobs:
2121
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
2222
with:
2323
script: |
24-
const { execSync } = require('child_process');
2524
const fs = require('fs');
2625
const path = require('path');
2726
2827
const pluginsDir = 'plugins';
2928
const errors = [];
3029
30+
function findSymlinks(rootDir) {
31+
const symlinks = [];
32+
const dirsToScan = [rootDir];
33+
34+
while (dirsToScan.length > 0) {
35+
const currentDir = dirsToScan.pop();
36+
let entries;
37+
38+
try {
39+
entries = fs.readdirSync(currentDir, { withFileTypes: true });
40+
} catch (error) {
41+
throw new Error(`Failed to read directory "${currentDir}": ${error.message}`);
42+
}
43+
44+
for (const entry of entries) {
45+
const entryPath = path.join(currentDir, entry.name);
46+
let stat;
47+
48+
try {
49+
stat = fs.lstatSync(entryPath);
50+
} catch (error) {
51+
throw new Error(`Failed to inspect "${entryPath}": ${error.message}`);
52+
}
53+
54+
if (stat.isSymbolicLink()) {
55+
symlinks.push(entryPath);
56+
continue;
57+
}
58+
59+
if (stat.isDirectory()) {
60+
dirsToScan.push(entryPath);
61+
}
62+
}
63+
}
64+
65+
return symlinks;
66+
}
67+
3168
if (!fs.existsSync(pluginsDir)) {
3269
console.log('No plugins directory found');
3370
return;
@@ -63,14 +100,15 @@ jobs:
63100
}
64101
}
65102
66-
// Check for symlinks anywhere in the plugin directory
103+
// Check for symlinks anywhere in the plugin directory without invoking a shell
67104
try {
68-
const allFiles = execSync(`find "${pluginPath}" -type l`, { encoding: 'utf-8' }).trim();
69-
if (allFiles) {
70-
errors.push(`${pluginPath} contains symlinks:\n${allFiles}`);
105+
const symlinkPaths = findSymlinks(pluginPath);
106+
if (symlinkPaths.length > 0) {
107+
const formattedPaths = symlinkPaths.map(filePath => `\`${filePath}\``).join(', ');
108+
errors.push(`${pluginPath} contains symlinks: ${formattedPaths}`);
71109
}
72-
} catch (e) {
73-
// find returns non-zero if no matches, ignore
110+
} catch (error) {
111+
errors.push(`Failed to inspect ${pluginPath} for symlinks: ${error.message}`);
74112
}
75113
}
76114

.github/workflows/cli-for-beginners-sync.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ For each local file that needs updating:
9393
- Preserve upstream wording, headings, section order, assignments, and overall chapter flow as closely as practical
9494
- Do not summarize, reinterpret, or "website-optimize" the course into a different learning experience
9595
- Only adapt what the website requires: Astro frontmatter, route-safe internal links, GitHub repo links, local asset paths, and minor HTML/CSS hooks needed for presentation
96+
- Convert repo-root relative links that are invalid on the published website (for example `../.github/agents/`, `./.github/...`, or `.github/...`) into absolute links to `https://github.com/github/copilot-cli-for-beginners` (use `/tree/main/...` for directories and `/blob/main/...` for files)
9697

9798
3. If upstream adds, removes, or renames major sections or chapters:
9899
- Create, delete, or rename the corresponding markdown files in `website/src/content/docs/learning-hub/cli-for-beginners/`

README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,24 @@ Thanks goes to these wonderful people ([emoji key](./CONTRIBUTING.md#contributor
443443
<td align="center" valign="top" width="14.28%"><a href="https://felickz.github.io/"><img src="https://avatars.githubusercontent.com/u/1760475?v=4" width="100px;" alt=""/><br /><sub><b>Chad Bentz</b></sub></a></td>
444444
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MarcelloCuoghi"><img src="https://avatars.githubusercontent.com/u/10816095?v=4" width="100px;" alt=""/><br /><sub><b>Marcello Cuoghi</b></sub></a></td>
445445
<td align="center" valign="top" width="14.28%"><a href="https://josh-ops.com/"><img src="https://avatars.githubusercontent.com/u/19912012?v=4" width="100px;" alt=""/><br /><sub><b>Josh Johanning</b></sub></a></td>
446+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jennyf19"><img src="https://avatars.githubusercontent.com/u/19942418?v=4" width="100px;" alt=""/><br /><sub><b>jennyf19</b></sub></a></td>
447+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SaravananRajaraman"><img src="https://avatars.githubusercontent.com/u/5166323?v=4" width="100px;" alt=""/><br /><sub><b>Saravanan Rajaraman</b></sub></a></td>
448+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Dhruvpatel004"><img src="https://avatars.githubusercontent.com/u/109230666?v=4" width="100px;" alt=""/><br /><sub><b>Patel Dhruv </b></sub></a></td>
449+
</tr>
450+
<tr>
451+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/reneenoble"><img src="https://avatars.githubusercontent.com/u/7269759?v=4" width="100px;" alt=""/><br /><sub><b>Renee Noble</b></sub></a></td>
452+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jjpinto"><img src="https://avatars.githubusercontent.com/u/16046674?v=4" width="100px;" alt=""/><br /><sub><b>jjpinto</b></sub></a></td>
453+
<td align="center" valign="top" width="14.28%"><a href="https://moeyui1.github.io/"><img src="https://avatars.githubusercontent.com/u/11503525?v=4" width="100px;" alt=""/><br /><sub><b>moeyui1</b></sub></a></td>
454+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mohammadali2549"><img src="https://avatars.githubusercontent.com/u/67632698?v=4" width="100px;" alt=""/><br /><sub><b>mohammadali2549</b></sub></a></td>
455+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/proflead"><img src="https://avatars.githubusercontent.com/u/59716480?v=4" width="100px;" alt=""/><br /><sub><b>Vladislav Guzey</b></sub></a></td>
456+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aparna198809"><img src="https://avatars.githubusercontent.com/u/99466930?v=4" width="100px;" alt=""/><br /><sub><b>aparna198809</b></sub></a></td>
457+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/TeddMcAdams"><img src="https://avatars.githubusercontent.com/u/15876990?v=4" width="100px;" alt=""/><br /><sub><b>Ed McAdams</b></sub></a></td>
458+
</tr>
459+
<tr>
460+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/eanders-tdy"><img src="https://avatars.githubusercontent.com/u/271782413?v=4" width="100px;" alt=""/><br /><sub><b>Emil Andersson</b></sub></a></td>
461+
<td align="center" valign="top" width="14.28%"><a href="http://www.mikaelkrief.com/"><img src="https://avatars.githubusercontent.com/u/2725302?v=4" width="100px;" alt=""/><br /><sub><b>Mikael</b></sub></a></td>
462+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Mrigank005"><img src="https://avatars.githubusercontent.com/u/179711954?v=4" width="100px;" alt=""/><br /><sub><b>Mrigank Singh</b></sub></a></td>
463+
<td align="center" valign="top" width="14.28%"><a href="https://www.jimbobbennett.dev/"><img src="https://avatars.githubusercontent.com/u/1710385?v=4" width="100px;" alt=""/><br /><sub><b>Jim Bennett</b></sub></a></td>
446464
</tr>
447465
</tbody>
448466
<tfoot>

0 commit comments

Comments
 (0)