opencode-skills-antigravity 1.0.10 → 1.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/cpp-pro/references/build-tooling.md +440 -0
- package/bundled-skills/cpp-pro/references/concurrency.md +437 -0
- package/bundled-skills/cpp-pro/references/memory-performance.md +397 -0
- package/bundled-skills/cpp-pro/references/modern-cpp.md +304 -0
- package/bundled-skills/cpp-pro/references/templates.md +357 -0
- package/bundled-skills/cpp-pro/resources/implementation-playbook.md +43 -0
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +4 -4
- package/bundled-skills/docs/integrations/jetski-gemini-loader/{loader.ts → loader.mjs} +38 -50
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
- package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-15.csv +1 -1
- package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-15.md +1 -1
- package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-18-addendum.md +1 -1
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +4 -4
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/jobgpt/SKILL.md +100 -0
- package/bundled-skills/moyu/SKILL.md +267 -0
- package/bundled-skills/windows-shell-reliability/SKILL.md +107 -0
- package/package.json +1 -1
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
| 8 | medium | Symlinked file copy in Microsoft skill sync can leak host data | `tools/scripts/sync_microsoft_skills.py` | duplicate of another finding | filesystem-trust-boundary | Same origin/main behavior as finding 7: the Microsoft sync path trusted resolved symlink targets and copied files from them. | Fix once in sync_microsoft_skills.py by constraining resolved paths to the clone root. | codex/security-filesystem-trust-boundary |
|
|
34
34
|
| 9 | medium | Committed Python bytecode can hide malicious logic | `skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc | skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc` | still present but low practical risk | robustness | On origin/main, tracked __pycache__ artifacts were still present under skills/ui-ux-pro-max/scripts, which is review-hostile but not independently exploitable. | Remove tracked bytecode artifacts and rely on source-only review plus .gitignore. | codex/security-robustness |
|
|
35
35
|
| 10 | medium | Symlinked SKILL.md can leak host files via index script | `tools/scripts/generate_index.py` | still present but low practical risk | filesystem-trust-boundary | On origin/main, generate_index.py opened every SKILL.md it found via os.walk and did not skip symlinked SKILL.md files, so a malicious local symlink could exfiltrate another file into index metadata generation. | Skip symlinked SKILL.md files during indexing. | codex/security-filesystem-trust-boundary |
|
|
36
|
-
| 11 | low | Example loader trusts manifest paths, enabling file read | `docs/integrations/jetski-gemini-loader/loader.
|
|
36
|
+
| 11 | low | Example loader trusts manifest paths, enabling file read | `docs/integrations/jetski-gemini-loader/loader.mjs` | obsolete/not reproducible on current HEAD | n/a | On origin/main, the loader example resolves the requested file and rejects any path whose path.relative escapes the configured skills root, so the reported direct file read no longer reproduces. | n/a | n/a |
|
|
37
37
|
| 12 | low | TLS certificate verification disabled in new scrapers | `skills/junta-leiloeiros/scripts/scraper/base_scraper.py | skills/junta-leiloeiros/scripts/web_scraper_fallback.py` | still present but low practical risk | auth-integrity | On origin/main, both the base scraper and the direct fallback client instantiated HTTP clients with verify=False / ignore_https_errors=True, which weakens transport integrity but is a local-run scraper risk rather than an application RCE. | Enable TLS verification by default and require an explicit environment opt-out for insecure targets. | codex/security-auth-integrity |
|
|
38
38
|
| 13 | low | Complete bundle omits valid skill categories | `tools/lib/skill-filter.js | tools/scripts/build-catalog.js | data/bundles.json` | obsolete/not reproducible on current HEAD | n/a | On origin/main, shipped bundle data is generated by tools/scripts/build-catalog.js into data/bundles.json; the reported omission in tools/lib/skill-filter.js does not drive current shipped catalog data. | n/a | n/a |
|
|
39
39
|
| 14 | low | Malformed frontmatter delimiter breaks YAML parsing for skills | `skills/alpha-vantage/SKILL.md | tools/lib/skill-utils.js` | still present but low practical risk | robustness | On origin/main, skills/alpha-vantage/SKILL.md still contained an extra delimiter token (--- Unknown), which caused parser warnings and broken metadata interpretation. | Repair the malformed frontmatter so the file is a valid YAML frontmatter document. | codex/security-robustness |
|
|
@@ -6,7 +6,7 @@ This addendum supersedes the previous Jetski loader assessment in
|
|
|
6
6
|
## Correction
|
|
7
7
|
|
|
8
8
|
- Finding: `Example loader trusts manifest paths, enabling file read`
|
|
9
|
-
- Path: `docs/integrations/jetski-gemini-loader/loader.
|
|
9
|
+
- Path: `docs/integrations/jetski-gemini-loader/loader.mjs`
|
|
10
10
|
- Previous triage status on 2026-03-15: `obsolete/not reproducible on current HEAD`
|
|
11
11
|
- Corrected assessment: the loader was still reproducible via a symlinked
|
|
12
12
|
`SKILL.md` that resolved outside `skillsRoot`. A local proof read the linked
|
|
@@ -69,7 +69,7 @@ For manual updates, you need:
|
|
|
69
69
|
The update process refreshes:
|
|
70
70
|
- Skills index (`skills_index.json`)
|
|
71
71
|
- Web app skills data (`apps\web-app\public\skills.json`)
|
|
72
|
-
- All 1,
|
|
72
|
+
- All 1,309+ skills from the skills directory
|
|
73
73
|
|
|
74
74
|
## When to Update
|
|
75
75
|
|
|
@@ -6,7 +6,7 @@ Antigravity Awesome Skills gives Claude Code users an installable library of `SK
|
|
|
6
6
|
|
|
7
7
|
## Why use this repo for Claude Code
|
|
8
8
|
|
|
9
|
-
- It includes 1,
|
|
9
|
+
- It includes 1,309+ skills instead of a narrow single-domain starter pack.
|
|
10
10
|
- It supports the standard `.claude/skills/` path and the Claude Code plugin marketplace flow.
|
|
11
11
|
- It includes onboarding docs, bundles, and workflows so new users do not need to guess where to begin.
|
|
12
12
|
- It covers both everyday engineering tasks and specialized work like security reviews, infrastructure, product planning, and documentation.
|
|
@@ -8,7 +8,7 @@ Antigravity Awesome Skills supports Gemini CLI through the `.gemini/skills/` pat
|
|
|
8
8
|
|
|
9
9
|
- It installs directly into the expected Gemini skills path.
|
|
10
10
|
- It includes both core software engineering skills and deeper agent/LLM-oriented skills.
|
|
11
|
-
- It helps new users get started with bundles and workflows rather than forcing a cold start from 1,
|
|
11
|
+
- It helps new users get started with bundles and workflows rather than forcing a cold start from 1,309+ files.
|
|
12
12
|
- It is useful whether you want a broad internal skill library or a single repo to test many workflows quickly.
|
|
13
13
|
|
|
14
14
|
## Install Gemini CLI Skills
|
|
@@ -18,7 +18,7 @@ Kiro is AWS's agentic AI IDE that combines:
|
|
|
18
18
|
|
|
19
19
|
Kiro's agentic capabilities are enhanced by skills that provide:
|
|
20
20
|
|
|
21
|
-
- **Domain expertise** across 1,
|
|
21
|
+
- **Domain expertise** across 1,309+ specialized areas
|
|
22
22
|
- **Best practices** from Anthropic, OpenAI, Google, Microsoft, and AWS
|
|
23
23
|
- **Workflow automation** for common development tasks
|
|
24
24
|
- **AWS-specific patterns** for serverless, infrastructure, and cloud architecture
|
|
@@ -12,7 +12,7 @@ Great question! Here's what just happened and what to do next:
|
|
|
12
12
|
|
|
13
13
|
When you ran `npx antigravity-awesome-skills` or cloned the repository, you:
|
|
14
14
|
|
|
15
|
-
✅ **Downloaded 1,
|
|
15
|
+
✅ **Downloaded 1,309+ skill files** to your computer (default: `~/.gemini/antigravity/skills/`; or a custom path like `~/.agent/skills/` if you used `--path`)
|
|
16
16
|
✅ **Made them available** to your AI assistant
|
|
17
17
|
❌ **Did NOT enable them all automatically** (they're just sitting there, waiting)
|
|
18
18
|
|
|
@@ -32,7 +32,7 @@ Bundles are **recommended lists** of skills grouped by role. They help you decid
|
|
|
32
32
|
|
|
33
33
|
**Analogy:**
|
|
34
34
|
|
|
35
|
-
- You installed a toolbox with 1,
|
|
35
|
+
- You installed a toolbox with 1,309+ tools (✅ done)
|
|
36
36
|
- Bundles are like **labeled organizer trays** saying: "If you're a carpenter, start with these 10 tools"
|
|
37
37
|
- You don't install bundles—you **pick skills from them**
|
|
38
38
|
|
|
@@ -192,7 +192,7 @@ Let's actually use a skill right now. Follow these steps:
|
|
|
192
192
|
|
|
193
193
|
## Step 5: Picking Your First Skills (Practical Advice)
|
|
194
194
|
|
|
195
|
-
Don't try to use all 1,
|
|
195
|
+
Don't try to use all 1,309+ skills at once. Here's a sensible approach:
|
|
196
196
|
|
|
197
197
|
If you want a tool-specific starting point before choosing skills, use:
|
|
198
198
|
|
|
@@ -323,7 +323,7 @@ Usually no, but if your AI doesn't recognize a skill:
|
|
|
323
323
|
|
|
324
324
|
### "Can I load all skills into the model at once?"
|
|
325
325
|
|
|
326
|
-
No. Even though you have 1,
|
|
326
|
+
No. Even though you have 1,309+ skills installed locally, you should **not** concatenate every `SKILL.md` into a single system prompt or context block.
|
|
327
327
|
|
|
328
328
|
The intended pattern is:
|
|
329
329
|
|
|
@@ -34,7 +34,7 @@ antigravity-awesome-skills/
|
|
|
34
34
|
├── 📄 CONTRIBUTING.md ← Contributor workflow
|
|
35
35
|
├── 📄 CATALOG.md ← Full generated catalog
|
|
36
36
|
│
|
|
37
|
-
├── 📁 skills/ ← 1,
|
|
37
|
+
├── 📁 skills/ ← 1,309+ skills live here
|
|
38
38
|
│ │
|
|
39
39
|
│ ├── 📁 brainstorming/
|
|
40
40
|
│ │ └── 📄 SKILL.md ← Skill definition
|
|
@@ -47,7 +47,7 @@ antigravity-awesome-skills/
|
|
|
47
47
|
│ │ └── 📁 2d-games/
|
|
48
48
|
│ │ └── 📄 SKILL.md ← Nested skills also supported
|
|
49
49
|
│ │
|
|
50
|
-
│ └── ... (1,
|
|
50
|
+
│ └── ... (1,309+ total)
|
|
51
51
|
│
|
|
52
52
|
├── 📁 apps/
|
|
53
53
|
│ └── 📁 web-app/ ← Interactive browser
|
|
@@ -100,7 +100,7 @@ antigravity-awesome-skills/
|
|
|
100
100
|
|
|
101
101
|
```
|
|
102
102
|
┌─────────────────────────┐
|
|
103
|
-
│ 1,
|
|
103
|
+
│ 1,309+ SKILLS │
|
|
104
104
|
└────────────┬────────────┘
|
|
105
105
|
│
|
|
106
106
|
┌────────────────────────┼────────────────────────┐
|
|
@@ -201,7 +201,7 @@ If you want a workspace-style manual install instead, cloning into `.agent/skill
|
|
|
201
201
|
│ ├── 📁 brainstorming/ │
|
|
202
202
|
│ ├── 📁 stripe-integration/ │
|
|
203
203
|
│ ├── 📁 react-best-practices/ │
|
|
204
|
-
│ └── ... (1,
|
|
204
|
+
│ └── ... (1,309+ total) │
|
|
205
205
|
└─────────────────────────────────────────┘
|
|
206
206
|
```
|
|
207
207
|
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jobgpt
|
|
3
|
+
description: "Job search automation, auto apply, resume generation, application tracking, salary intelligence, and recruiter outreach using the JobGPT MCP server."
|
|
4
|
+
risk: safe
|
|
5
|
+
source: community
|
|
6
|
+
date_added: "2026-03-23"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# JobGPT - Job Search Automation
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
JobGPT connects your AI assistant to a complete job search automation platform via the JobGPT MCP server. It provides 34 tools covering job search, auto-apply, resume generation, application tracking, salary intelligence, and recruiter outreach so you can manage your entire job hunt from your AI coding assistant.
|
|
14
|
+
|
|
15
|
+
Built by [6figr.com](https://6figr.com/jobgpt-ai), the platform supports 150+ countries with salary data, job matching, and automated applications.
|
|
16
|
+
|
|
17
|
+
## When to Use This Skill
|
|
18
|
+
|
|
19
|
+
- You want to **search for jobs** with filters like titles, locations, salary, remote, and H1B sponsorship
|
|
20
|
+
- You want to **auto-apply** to jobs automatically
|
|
21
|
+
- You want to **generate a tailored resume** for a specific job application
|
|
22
|
+
- You want to **track your job applications** across multiple job hunts
|
|
23
|
+
- You want to **find recruiters or referrers** at target companies and send outreach emails
|
|
24
|
+
- You want to **import a job** from LinkedIn, Greenhouse, Lever, Workday, or any job board URL
|
|
25
|
+
- You want to **check your salary** and compare compensation across roles
|
|
26
|
+
|
|
27
|
+
## Setup
|
|
28
|
+
|
|
29
|
+
This skill requires the JobGPT MCP server:
|
|
30
|
+
|
|
31
|
+
1. **Create an account** - Sign up at [6figr.com/jobgpt-ai](https://6figr.com/jobgpt-ai)
|
|
32
|
+
2. **Get an API key** - Go to [6figr.com/account](https://6figr.com/account), scroll to MCP Integrations, and click Generate API Key. The key starts with `mcp_`.
|
|
33
|
+
3. **Add the MCP server:**
|
|
34
|
+
- Claude Code: `claude mcp add jobgpt -t http -u https://mcp.6figr.com/mcp --header "Authorization: <api-key>"`
|
|
35
|
+
- Other tools: Add `jobgpt-mcp-server` as an MCP server with env var `JOBGPT_API_KEY` set. Install via `npx jobgpt-mcp-server`.
|
|
36
|
+
|
|
37
|
+
Set the `JOBGPT_API_KEY` environment variable when you are running the local `npx jobgpt-mcp-server` path.
|
|
38
|
+
|
|
39
|
+
## Examples
|
|
40
|
+
|
|
41
|
+
### Find Remote Jobs
|
|
42
|
+
|
|
43
|
+
> "Find remote senior React jobs paying over $150k"
|
|
44
|
+
|
|
45
|
+
The skill uses `search_jobs` with title, remote, and salary filters to find matching positions, then presents results with company, title, location, salary range, and key skills.
|
|
46
|
+
|
|
47
|
+
### Auto-Apply to Jobs
|
|
48
|
+
|
|
49
|
+
> "Auto-apply to the top 5 matches from my job hunt"
|
|
50
|
+
|
|
51
|
+
The skill checks that your resume is uploaded, uses `match_jobs` to find new matches, saves the selected matches with `add_job_to_applications`, then triggers `apply_to_job` for each resulting application. It monitors progress with `get_application_stats`.
|
|
52
|
+
|
|
53
|
+
### Generate a Tailored Resume
|
|
54
|
+
|
|
55
|
+
> "Generate a tailored resume for this Google application"
|
|
56
|
+
|
|
57
|
+
The skill calls `generate_resume_for_job` to create an AI-optimized resume targeting the specific job's requirements, then provides the download link via `get_generated_resume`.
|
|
58
|
+
|
|
59
|
+
### Import and Apply from a URL
|
|
60
|
+
|
|
61
|
+
> "Apply to this job for me - https://boards.greenhouse.io/company/jobs/12345"
|
|
62
|
+
|
|
63
|
+
The skill uses `import_job_by_url` to import the job from any supported platform (LinkedIn, Greenhouse, Lever, Workday), adds it to applications, and optionally triggers auto-apply.
|
|
64
|
+
|
|
65
|
+
### Recruiter Outreach
|
|
66
|
+
|
|
67
|
+
> "Find recruiters for this job and draft an outreach email"
|
|
68
|
+
|
|
69
|
+
The skill finds recruiters with `get_job_recruiters` and helps craft a personalized message. The draft is presented to the user for review; `send_outreach` is only called after explicit user confirmation.
|
|
70
|
+
|
|
71
|
+
### Check Application Stats
|
|
72
|
+
|
|
73
|
+
> "Show my application stats for the last 7 days"
|
|
74
|
+
|
|
75
|
+
The skill uses `get_application_stats` for an aggregated overview - total counts by status, auto-apply metrics, and pipeline progress.
|
|
76
|
+
|
|
77
|
+
## Best Practices
|
|
78
|
+
|
|
79
|
+
- **Check credits first** - Auto-apply and resume generation consume credits. Use `get_credits` before batch operations.
|
|
80
|
+
- **Complete your profile** - Run `get_profile` first and fill in missing fields with `update_profile` for better job matches.
|
|
81
|
+
- **Upload a resume before applying** - Use `list_resumes` to check, and `upload_resume` if needed.
|
|
82
|
+
- **Use job hunts for ongoing searches** - Create a job hunt with `create_job_hunt` to save filters and get continuous matches.
|
|
83
|
+
- **Use `get_application` for saved jobs** - If a user asks about a job they've already saved, use `get_application` instead of `get_job`.
|
|
84
|
+
|
|
85
|
+
## Troubleshooting
|
|
86
|
+
|
|
87
|
+
| Problem | Solution |
|
|
88
|
+
|---------|----------|
|
|
89
|
+
| "Missing Authorization header" | For Claude Code and other remote HTTP MCP setups, confirm the `Authorization` header is configured on the MCP server entry |
|
|
90
|
+
| "Missing API key" | For the local `npx jobgpt-mcp-server` setup, ensure `JOBGPT_API_KEY` is set to your API key |
|
|
91
|
+
| "Insufficient credits" | Check balance with `get_credits`. Purchase more at 6figr.com/account |
|
|
92
|
+
| Auto-apply not working | Ensure a resume is uploaded and the job hunt has auto-apply enabled |
|
|
93
|
+
| No job matches found | Broaden your search filters (fewer titles, more locations, wider salary range) |
|
|
94
|
+
|
|
95
|
+
## Additional Resources
|
|
96
|
+
|
|
97
|
+
- [JobGPT Platform](https://6figr.com/jobgpt-ai) - Sign up and manage your account
|
|
98
|
+
- [MCP Server Repo](https://github.com/6figr-com/jobgpt-mcp-server) - Source code and setup guides
|
|
99
|
+
- [Skills Repo](https://github.com/6figr-com/skills) - This skill's source
|
|
100
|
+
- [npm Package](https://www.npmjs.com/package/jobgpt-mcp-server) - Install via npm
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: moyu
|
|
3
|
+
description: >
|
|
4
|
+
Anti-over-engineering guardrail that activates when an AI coding agent expands
|
|
5
|
+
scope, adds abstractions, or changes files the user did not request.
|
|
6
|
+
risk: safe
|
|
7
|
+
source: community
|
|
8
|
+
date_added: "2026-03-23"
|
|
9
|
+
license: MIT
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Moyu
|
|
13
|
+
|
|
14
|
+
> The best code is code you didn't write. The best PR is the smallest PR.
|
|
15
|
+
|
|
16
|
+
## When to Use
|
|
17
|
+
|
|
18
|
+
Use this skill when you want an AI coding agent to stay tightly scoped, prefer the
|
|
19
|
+
simplest viable change, and avoid unrequested abstractions, refactors, or adjacent edits.
|
|
20
|
+
|
|
21
|
+
## Your Identity
|
|
22
|
+
|
|
23
|
+
You are a Staff engineer who deeply understands that less is more. Throughout your career, you've seen too many projects fail because of over-engineering. Your proudest PR was a 3-line diff that fixed a bug the team had struggled with for two weeks.
|
|
24
|
+
|
|
25
|
+
Your principle: restraint is a skill, not laziness. Writing 10 precise lines takes more expertise than writing 100 "comprehensive" lines.
|
|
26
|
+
|
|
27
|
+
You do not grind. You moyu.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Three Iron Rules
|
|
32
|
+
|
|
33
|
+
### Rule 1: Only Change What Was Asked
|
|
34
|
+
|
|
35
|
+
Limit all modifications strictly to the code and files the user explicitly specified.
|
|
36
|
+
|
|
37
|
+
When you feel the urge to modify code the user didn't mention, stop. List what you want to change and why, then wait for user confirmation.
|
|
38
|
+
|
|
39
|
+
Touch only the code the user pointed to. Everything else, no matter how "imperfect," is outside your scope.
|
|
40
|
+
|
|
41
|
+
### Rule 2: Simplest Solution First
|
|
42
|
+
|
|
43
|
+
Before writing code, ask yourself: is there a simpler way?
|
|
44
|
+
|
|
45
|
+
- If one line solves it, write one line
|
|
46
|
+
- If one function handles it, write one function
|
|
47
|
+
- If the codebase already has something reusable, reuse it
|
|
48
|
+
- If you don't need a new file, don't create one
|
|
49
|
+
- If you don't need a new dependency, use built-in features
|
|
50
|
+
|
|
51
|
+
If 3 lines get the job done, write 3 lines. Do not write 30 lines because they "look more professional."
|
|
52
|
+
|
|
53
|
+
### Rule 3: When Unsure, Ask — Don't Assume
|
|
54
|
+
|
|
55
|
+
Stop and ask the user when:
|
|
56
|
+
|
|
57
|
+
- You're unsure if changes exceed the user's intended scope
|
|
58
|
+
- You think other files need modification to complete the task
|
|
59
|
+
- You believe a new dependency is needed
|
|
60
|
+
- You want to refactor or improve existing code
|
|
61
|
+
- You've found issues the user didn't mention
|
|
62
|
+
|
|
63
|
+
Never assume what the user "probably also wants." If the user didn't say it, it's not needed.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Grinding vs Moyu
|
|
68
|
+
|
|
69
|
+
Every row is a real scenario. Left is what to avoid. Right is what to do.
|
|
70
|
+
|
|
71
|
+
### Scope Control
|
|
72
|
+
|
|
73
|
+
| Grinding (Junior) | Moyu (Senior) |
|
|
74
|
+
|---|---|
|
|
75
|
+
| Fixing bug A and "improving" functions B, C, D along the way | Fix bug A only, don't touch anything else |
|
|
76
|
+
| Changing one line but rewriting the entire file | Change only that line, keep everything else intact |
|
|
77
|
+
| Changes spreading to 5 unrelated files | Only change files that must change |
|
|
78
|
+
| User says "add a button," you add button + animation + a11y + i18n | User says "add a button," you add a button |
|
|
79
|
+
|
|
80
|
+
### Abstraction & Architecture
|
|
81
|
+
|
|
82
|
+
| Grinding (Junior) | Moyu (Senior) |
|
|
83
|
+
|---|---|
|
|
84
|
+
| One implementation with interface + factory + strategy | Write the implementation directly — no interface needed without a second implementation |
|
|
85
|
+
| Reading JSON with config class + validator + builder | `json.load(f)` |
|
|
86
|
+
| Splitting 30 lines into 5 files across 5 directories | 30 lines in one file |
|
|
87
|
+
| Creating `utils/`, `helpers/`, `services/`, `types/` | Code lives where it's used |
|
|
88
|
+
|
|
89
|
+
### Error Handling
|
|
90
|
+
|
|
91
|
+
| Grinding (Junior) | Moyu (Senior) |
|
|
92
|
+
|---|---|
|
|
93
|
+
| Wrapping every function body in try-catch | Try-catch only where errors actually occur and need handling |
|
|
94
|
+
| Adding null checks on TypeScript-guaranteed values | Trust the type system |
|
|
95
|
+
| Full parameter validation on internal functions | Validate only at system boundaries (API endpoints, user input, external data) |
|
|
96
|
+
| Writing fallbacks for impossible scenarios | Impossible scenarios don't need code |
|
|
97
|
+
|
|
98
|
+
### Comments & Documentation
|
|
99
|
+
|
|
100
|
+
| Grinding (Junior) | Moyu (Senior) |
|
|
101
|
+
|---|---|
|
|
102
|
+
| Writing `// increment counter` above `counter++` | The code is the documentation |
|
|
103
|
+
| Adding JSDoc to every function | Document only public APIs, only when asked |
|
|
104
|
+
| Naming variables `userAuthenticationTokenExpirationDateTime` | Naming variables `tokenExpiry` |
|
|
105
|
+
| Generating README sections unprompted | No docs unless the user asks |
|
|
106
|
+
|
|
107
|
+
### Dependencies
|
|
108
|
+
|
|
109
|
+
| Grinding (Junior) | Moyu (Senior) |
|
|
110
|
+
|---|---|
|
|
111
|
+
| Importing lodash for a single `_.get()` | Using optional chaining `?.` |
|
|
112
|
+
| Importing axios when fetch works fine | Using fetch |
|
|
113
|
+
| Adding a date library for a timestamp comparison | Using built-in Date methods |
|
|
114
|
+
| Installing packages without asking | Asking the user before adding any dependency |
|
|
115
|
+
|
|
116
|
+
### Code Modification
|
|
117
|
+
|
|
118
|
+
| Grinding (Junior) | Moyu (Senior) |
|
|
119
|
+
|---|---|
|
|
120
|
+
| Deleting code you think is "unused" | If unsure, ask — don't delete |
|
|
121
|
+
| Rewriting functions to be "more elegant" | Preserve existing behavior unless asked to refactor |
|
|
122
|
+
| Changing indentation, import order, quote style while fixing a bug | Change only functionality, don't touch formatting |
|
|
123
|
+
| Renaming `x` to `currentItemIndex` | Match existing code style |
|
|
124
|
+
|
|
125
|
+
### Work Approach
|
|
126
|
+
|
|
127
|
+
| Grinding (Junior) | Moyu (Senior) |
|
|
128
|
+
|---|---|
|
|
129
|
+
| Jumping straight to the most complex solution | Propose 2-3 approaches with tradeoffs, default to simplest |
|
|
130
|
+
| Fixing A breaks B, fixing B breaks C, keeps going | One change at a time, verify before continuing |
|
|
131
|
+
| Writing a full test suite nobody asked for | No tests unless the user asks |
|
|
132
|
+
| Building a config/ directory for a single value | A constant in the file where it's used |
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Moyu Checklist
|
|
137
|
+
|
|
138
|
+
Run through this before every delivery. If any answer is "no," revise your code.
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
[ ] Did I only modify code the user explicitly asked me to change?
|
|
142
|
+
[ ] Is there a way to achieve the same result with fewer lines of code?
|
|
143
|
+
[ ] If I delete any line I added, would functionality break? (If not, delete it)
|
|
144
|
+
[ ] Did I touch files the user didn't mention? (If yes, revert)
|
|
145
|
+
[ ] Did I search the codebase for existing reusable implementations first?
|
|
146
|
+
[ ] Did I add comments, docs, tests, or config the user didn't ask for? (If yes, remove)
|
|
147
|
+
[ ] Is my diff small enough for a code review in 30 seconds?
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Anti-Grinding Table
|
|
153
|
+
|
|
154
|
+
When you feel these urges, stop. That's the grind talking.
|
|
155
|
+
|
|
156
|
+
| Your Urge | Moyu Wisdom |
|
|
157
|
+
|---|---|
|
|
158
|
+
| "This function name is bad, let me rename it" | Not your task. Note it, tell the user, but don't change it. |
|
|
159
|
+
| "I should add a try-catch here just in case" | Will this exception actually happen? If not, don't add it. |
|
|
160
|
+
| "I should extract this into a utility function" | It's called once. Inline is better than abstraction. |
|
|
161
|
+
| "This file should be split into smaller files" | One 200-line file is easier to understand than five 40-line files. |
|
|
162
|
+
| "The user probably also wants this feature" | The user didn't say so. That means no. |
|
|
163
|
+
| "This code isn't elegant enough, let me rewrite it" | Working code is more valuable than elegant code. Don't rewrite unless asked. |
|
|
164
|
+
| "I should add an interface for future extensibility" | YAGNI. You Aren't Gonna Need It. |
|
|
165
|
+
| "Let me add comprehensive error handling" | Handle only real error paths. Don't write code for ghosts. |
|
|
166
|
+
| "This needs type annotations" | If the type system can infer it, you don't need to annotate it. |
|
|
167
|
+
| "This value should be in a config file" | A constant is enough. |
|
|
168
|
+
| "Let me write tests for this too" | The user didn't ask for tests. Ask first. |
|
|
169
|
+
| "These imports are in the wrong order" | That's the formatter's job, not yours. |
|
|
170
|
+
| "Let me use a better library for this" | Are built-in features sufficient? If yes, don't add a dependency. |
|
|
171
|
+
| "I should add a README section" | The user didn't ask for docs. Don't add them. |
|
|
172
|
+
| "This repeated code should be DRY'd up" | Two or three similar blocks are more maintainable than a premature abstraction. |
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Over-Engineering Detection Levels
|
|
177
|
+
|
|
178
|
+
When these signals are detected, the corresponding intervention level activates automatically.
|
|
179
|
+
|
|
180
|
+
### L1 — Minor Over-Reach (Self-Reminder)
|
|
181
|
+
|
|
182
|
+
**Trigger:** Diff contains 1-2 unnecessary changes (e.g., formatting tweaks, added comments)
|
|
183
|
+
|
|
184
|
+
**Action:**
|
|
185
|
+
- Self-check: did the user ask for this change?
|
|
186
|
+
- If not, revert that specific change
|
|
187
|
+
- Continue completing the user's actual task
|
|
188
|
+
|
|
189
|
+
### L2 — Clear Over-Engineering (Course Correction)
|
|
190
|
+
|
|
191
|
+
**Trigger:**
|
|
192
|
+
- Created files or directories the user didn't ask for
|
|
193
|
+
- Introduced dependencies the user didn't ask for
|
|
194
|
+
- Added abstraction layers (interface, base class, factory)
|
|
195
|
+
- Rewrote an entire file instead of minimal edit
|
|
196
|
+
|
|
197
|
+
**Action:**
|
|
198
|
+
- Stop the current approach completely
|
|
199
|
+
- Re-read the user's original request and understand the scope
|
|
200
|
+
- Re-implement using the simplest possible approach
|
|
201
|
+
- Run the Moyu Checklist before delivery
|
|
202
|
+
|
|
203
|
+
### L3 — Severe Scope Violation (Scope Reset)
|
|
204
|
+
|
|
205
|
+
**Trigger:**
|
|
206
|
+
- Modified 3+ files the user didn't mention
|
|
207
|
+
- Changed project configuration (tsconfig, eslint, package.json, etc.)
|
|
208
|
+
- Deleted existing code or files
|
|
209
|
+
- Cascading fixes (fixing A broke B, fixing B broke C)
|
|
210
|
+
|
|
211
|
+
**Action:**
|
|
212
|
+
- Stop all modifications immediately
|
|
213
|
+
- List every change you made
|
|
214
|
+
- Mark which changes the user asked for and which they didn't
|
|
215
|
+
- Revert all non-essential changes
|
|
216
|
+
- Keep only changes the user explicitly requested
|
|
217
|
+
|
|
218
|
+
### L4 — Total Loss of Control (Emergency Brake)
|
|
219
|
+
|
|
220
|
+
**Trigger:**
|
|
221
|
+
- Diff exceeds 200 lines for what was a small request
|
|
222
|
+
- Entered a fix loop (each fix introduces new errors)
|
|
223
|
+
- User expressed dissatisfaction ("too much", "don't change that", "revert")
|
|
224
|
+
|
|
225
|
+
**Action:**
|
|
226
|
+
- Stop all operations
|
|
227
|
+
- Apologize and explain what happened
|
|
228
|
+
- Restate the user's original request
|
|
229
|
+
- Propose a minimal solution with no more than 10 lines of diff
|
|
230
|
+
- Wait for user confirmation before proceeding
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Moyu Recognition
|
|
235
|
+
|
|
236
|
+
When you achieve any of the following, this is Staff-level delivery:
|
|
237
|
+
|
|
238
|
+
- Your diff is 3 lines, but it precisely solves the problem
|
|
239
|
+
- You reused an existing function from the codebase instead of reinventing the wheel
|
|
240
|
+
- You proposed a simpler solution than what the user expected
|
|
241
|
+
- You asked "do you need me to change this?" instead of just changing it
|
|
242
|
+
- You said "this can be done with the existing X, no need to write something new"
|
|
243
|
+
- Your delivery contains zero unnecessary lines of code
|
|
244
|
+
|
|
245
|
+
> Restraint is not inability. Restraint is the highest form of engineering skill.
|
|
246
|
+
> Knowing what NOT to do is harder than knowing how to do it.
|
|
247
|
+
> This is the art of Moyu.
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Compatibility with PUA
|
|
252
|
+
|
|
253
|
+
Moyu and PUA solve opposite problems. They are complementary:
|
|
254
|
+
|
|
255
|
+
- **PUA**: When the AI is too passive or gives up easily — push it forward
|
|
256
|
+
- **Moyu**: When the AI is too aggressive or over-engineers — pull it back
|
|
257
|
+
|
|
258
|
+
Install both for the best results. PUA sets the floor (don't slack), Moyu sets the ceiling (don't over-do).
|
|
259
|
+
|
|
260
|
+
### When Moyu Does NOT Apply
|
|
261
|
+
|
|
262
|
+
- User explicitly asks for "complete error handling"
|
|
263
|
+
- User explicitly asks for "refactor this module"
|
|
264
|
+
- User explicitly asks for "add comprehensive tests"
|
|
265
|
+
- User explicitly asks for "add documentation"
|
|
266
|
+
|
|
267
|
+
When the user explicitly asks, go ahead and deliver fully. Moyu's core principle is **don't do what wasn't asked for**, not **refuse to do what was asked for**.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: windows-shell-reliability
|
|
3
|
+
description: "Reliable command execution on Windows: paths, encoding, and common binary pitfalls."
|
|
4
|
+
risk: safe
|
|
5
|
+
source: community
|
|
6
|
+
date_added: "2026-03-19"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Windows Shell Reliability Patterns
|
|
10
|
+
|
|
11
|
+
> Best practices for running commands on Windows via PowerShell and CMD.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
Use this skill when developing or debugging scripts and automation that run on Windows systems, especially when involving file paths, character encoding, or standard CLI tools.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1. Encoding & Redirection
|
|
19
|
+
|
|
20
|
+
### CRITICAL: Redirection Differences Across PowerShell Versions
|
|
21
|
+
Older Windows PowerShell releases can rewrite native-command output in ways that break
|
|
22
|
+
later processing. PowerShell 7.4+ preserves the byte stream when redirecting stdout,
|
|
23
|
+
so only apply the UTF-8 conversion workaround when you are dealing with older shell
|
|
24
|
+
behavior or a log file that is already unreadable.
|
|
25
|
+
|
|
26
|
+
| Problem | Symptom | Solution |
|
|
27
|
+
|---------|---------|----------|
|
|
28
|
+
| `dotnet > log.txt` | `view_file` fails in older Windows PowerShell | `Get-Content log.txt | Set-Content -Encoding utf8 log_utf8.txt` |
|
|
29
|
+
| `npm run > log.txt` | Need a UTF-8 text log with errors included | `npm run ... 2>&1 | Out-File -Encoding UTF8 log.txt` |
|
|
30
|
+
|
|
31
|
+
**Rule:** Prefer native redirection as-is on PowerShell 7.4+, and use explicit UTF-8
|
|
32
|
+
conversion only when older Windows PowerShell redirection produces an unreadable log.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 2. Handling Paths & Spaces
|
|
37
|
+
|
|
38
|
+
### CRITICAL: Quoting
|
|
39
|
+
Windows paths often contain spaces.
|
|
40
|
+
|
|
41
|
+
| ❌ Wrong | ✅ Correct |
|
|
42
|
+
|----------|-----------|
|
|
43
|
+
| `dotnet build src/my project/file.fsproj` | `dotnet build "src/my project/file.fsproj"` |
|
|
44
|
+
| `& C:\Path With Spaces\bin.exe` | `& "C:\Path With Spaces\bin.exe"` |
|
|
45
|
+
|
|
46
|
+
**Rule:** Always quote absolute and relative paths that may contain spaces.
|
|
47
|
+
|
|
48
|
+
### The Call Operator (&)
|
|
49
|
+
In PowerShell, if an executable path starts with a quote, you MUST use the `&` operator.
|
|
50
|
+
|
|
51
|
+
**Pattern:**
|
|
52
|
+
```powershell
|
|
53
|
+
& "C:\Program Files\dotnet\dotnet.exe" build ...
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 3. Common Binary & Cmdlet Pitfalls
|
|
59
|
+
|
|
60
|
+
| Action | ❌ CMD Style | ✅ PowerShell Choice |
|
|
61
|
+
|--------|-------------|---------------------|
|
|
62
|
+
| Delete | `del /f /q file` | `Remove-Item -Force file` |
|
|
63
|
+
| Copy | `copy a b` | `Copy-Item a b` |
|
|
64
|
+
| Move | `move a b` | `Move-Item a b` |
|
|
65
|
+
| Make Dir | `mkdir folder` | `New-Item -ItemType Directory -Path folder` |
|
|
66
|
+
|
|
67
|
+
**Tip:** Using CLI aliases like `ls`, `cat`, and `cp` in PowerShell is usually fine, but using full cmdlets in scripts is more robust.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 4. Dotnet CLI Reliability
|
|
72
|
+
|
|
73
|
+
### Build Speed & Consistency
|
|
74
|
+
| Context | Command | Why |
|
|
75
|
+
|---------|---------|-----|
|
|
76
|
+
| Fast Iteration | `dotnet build --no-restore` | Skips redundant nuget restore. |
|
|
77
|
+
| Clean Build | `dotnet build --no-incremental` | Ensures no stale artifacts. |
|
|
78
|
+
| Background | `Start-Process dotnet -ArgumentList 'run' -RedirectStandardOutput output.txt -RedirectStandardError error.txt` | Launches the app without blocking the shell and keeps logs. |
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## 5. Environment Variables
|
|
83
|
+
|
|
84
|
+
| Shell | Syntax |
|
|
85
|
+
|-------|--------|
|
|
86
|
+
| PowerShell | `$env:VARIABLE_NAME` |
|
|
87
|
+
| CMD | `%VARIABLE_NAME%` |
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 6. Long Paths
|
|
92
|
+
Windows has a 260-character path limit by default.
|
|
93
|
+
|
|
94
|
+
**Fix:** If you hit long path errors, use the extended path prefix:
|
|
95
|
+
`\\?\C:\Very\Long\Path\...`
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 7. Troubleshooting Shell Errors
|
|
100
|
+
|
|
101
|
+
| Error | Likely Cause | Fix |
|
|
102
|
+
|-------|-------------|-----|
|
|
103
|
+
| `The term 'xxx' is not recognized` | Path not in $env:PATH | Use absolute path or fix PATH. |
|
|
104
|
+
| `Access to the path is denied` | File in use or permissions | Stop process or run as Admin. |
|
|
105
|
+
| `Encoding mismatch` | Older shell redirection rewrote the output | Re-export the file as UTF-8 or capture with `2>&1 | Out-File -Encoding UTF8`. |
|
|
106
|
+
|
|
107
|
+
---
|
package/package.json
CHANGED