My agent skills that I use every day to do real engineering — not vibe coding.
Developing real applications is hard. Approaches like GSD, BMAD, and Spec-Kit try to help by owning the process. But while doing so, they take away your control and make bugs in the process hard to resolve.
These skills are designed to be small, easy to adapt, and composable. They work with any model. They're based on decades of engineering experience. Hack around with them. Make them your own. Enjoy.
Credit. This repo started as a fork of Matt Pocock's skills (MIT licensed). Many of the engineering and productivity skills here are his original work, adapted for my own workflow. Thanks and full credit to Matt — see
LICENSE.
- Run the installer:
npx skills@latest add mauriciovieira/skills-
Pick the skills you want, and which coding agents you want to install them on. Make sure you select
/setup-mauricio-vieira-skills. -
Run
/setup-mauricio-vieira-skillsin your agent. It will:- Ask you which issue tracker you want to use (GitHub, GitLab, local markdown, or another workflow you describe)
- Ask you what labels you apply to tickets when you triage them (optional - only relevant if you also use groundwork's
/groundwork:triage) - Ask you where you want to save any docs we create
-
Bam - you're ready to go.
I built these skills as a way to fix common failure modes I see with Claude Code, Codex, and other coding agents.
"No-one knows exactly what they want"
David Thomas & Andrew Hunt, The Pragmatic Programmer
The Problem. The most common failure mode in software development is misalignment. You think the dev knows what you want. Then you see what they've built - and you realize it didn't understand you at all.
This is just the same in the AI age. There is a communication gap between you and the agent. The fix for this is a grilling session - getting the agent to ask you detailed questions about what you're building.
The Fix now lives in groundwork, my spec-driven-development framework: /groundwork:triage grills out under-specified issues before they reach an agent, and /groundwork:improve-codebase-architecture grills through a chosen refactor candidate before touching code.
Use them every time you want to align with the agent before making a change.
With a ubiquitous language, conversations among developers and expressions of the code are all derived from the same domain model.
Eric Evans, Domain-Driven-Design
The Problem: At the start of a project, devs and the people they're building the software for (the domain experts) are usually speaking different languages.
I felt the same tension with my agents. Agents are usually dropped into a project and asked to figure out the jargon as they go. So they use 20 words where 1 will do.
The Fix for this is a shared language. It's a document that helps agents decode the jargon used in the project.
Example
Here's an example CONTEXT.md, from Matt Pocock's course-video-manager repo. Which one is easier to read?
- BEFORE: "There's a problem when a lesson inside a section of a course is made 'real' (i.e. given a spot in the file system)"
- AFTER: "There's a problem with the materialization cascade"
This concision pays off session after session.
This is built into groundwork's /groundwork:improve-codebase-architecture. As it walks you through a deepening candidate, it keeps a project glossary sharpened with the terminology you settle on, and documents hard-to-explain decisions as ADRs.
It's hard to explain how powerful this is. It might be the single coolest technique in this repo. Try it, and see.
Tip
A shared language has many other benefits than reducing verbosity:
- Variables, functions and files are named consistently, using the shared language
- As a result, the codebase is easier to navigate for the agent
- The agent also spends fewer tokens on thinking, because it has access to a more concise language
"Always take small, deliberate steps. The rate of feedback is your speed limit. Never take on a task that’s too big."
David Thomas & Andrew Hunt, The Pragmatic Programmer
The Problem: Let's say that you and the agent are aligned on what to build. What happens when the agent still produces crap?
It's time to look at your feedback loops. Without feedback on how the code it produces actually runs, the agent will be flying blind.
The Fix: You need the usual tranche of feedback loops: static types, browser access, and automated tests.
For automated tests, a red-green-refactor loop is critical. This is where the agent writes a failing test first, then fixes the test. This helps give the agent a consistent level of feedback that results in far better code.
I've built a /tdd skill you can slot into any project. It encourages red-green-refactor and gives the agent plenty of guidance on what makes good and bad tests.
For debugging, I've also built a /diagnose skill that wraps best debugging practices into a simple loop.
"Invest in the design of the system every day."
Kent Beck, Extreme Programming Explained
"The best modules are deep. They allow a lot of functionality to be accessed through a simple interface."
John Ousterhout, A Philosophy Of Software Design
The Problem: Most apps built with agents are complex and hard to change. Because agents can radically speed up coding, they also accelerate software entropy. Codebases get more complex at an unprecedented rate.
The Fix for this is a radical new approach to AI-powered development: caring about the design of the code.
This is built in to every layer of these skills:
/zoom-outtells the agent to explain code in the context of the whole system
And crucially, groundwork's /groundwork:improve-codebase-architecture helps you rescue a codebase that has become a ball of mud. I recommend running it on your codebase once every few days.
Software engineering fundamentals matter more than ever. These skills are my best effort at condensing these fundamentals into repeatable practices, to help you ship the best apps of your career. Enjoy.
Skills I use daily for code work.
Note
The software-engineering skills in this bucket are gradually migrating to groundwork, my spec-driven-development framework. Expect this bucket to shrink over time as skills move there.
- diagnose — Disciplined diagnosis loop for hard bugs and performance regressions: reproduce → minimise → hypothesise → instrument → fix → regression-test.
- setup-mauricio-vieira-skills — Scaffold the per-repo config (issue tracker, triage label vocabulary, domain doc layout) that the other engineering skills consume. Run once per repo before using
diagnose,tdd, orzoom-out. - tdd — Test-driven development with a red-green-refactor loop. Builds features or fixes bugs one vertical slice at a time.
- zoom-out — Tell the agent to zoom out and give broader context or a higher-level perspective on an unfamiliar section of code.
- prototype — Build a throwaway prototype to flesh out a design — either a runnable terminal app for state/business-logic questions, or several radically different UI variations toggleable from one route.
- ansible-kamal — Scaffold an Ansible + Kamal 2 infrastructure tree for a Rails app on an Ubuntu VPS (hardened baseline, host PostgreSQL, kamal-proxy on 80/443), with staging+production or single-domain modes.
- babysit-with-github-copilot — Drive a PR from open to merged in tight 5-minute cycles around GitHub Copilot review feedback, then clean up the branch/worktree.
- setup-worktree — Bootstrap a linked git worktree from its main repo by symlinking language-agnostic dependency dirs (node_modules, .venv, vendor, target, deps) and copying env files.
- creative-constraints - Roll a machine-random set of binding design constraints before any UI/web design work, so no two sessions converge on the same generic, templated layout.
- chrome-devtools-mcp - Scaffold a dedicated Chrome instance with an isolated login-persisting profile and a chrome-devtools-mcp (CDP) registration, to inspect authenticated network traffic and turn captured requests into reproducible probe scripts.
General workflow tools, not code-specific.
- caveman — Ultra-compressed communication mode. Cuts token usage ~75% by dropping filler while keeping full technical accuracy.
- handoff — Compact the current conversation into a handoff document so another agent can continue the work.
- write-a-skill — Create new skills with proper structure, progressive disclosure, and bundled resources.
Tools I keep around but rarely use.
- git-guardrails-claude-code — Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, etc.) before they execute.
- setup-pre-commit — Set up Husky pre-commit hooks with lint-staged, Biome, type checking, and tests.
- sync-dotfiles — Sync local agent/editor config (e.g.
~/.claude/,~/.cursor/) into a dotfiles git repo, show the diff, and prompt for a commit. Asks for your dotfiles dir and which sources to sync.