doing-a-simple-two-sta…
Use when analyzing a large corpus of text, code, or data that exceeds a single agent's effective context - orchestrates parallel Worker subagents, Critic…
ALWAYS use this skill when writing or refactoring code. Includes context-dependent sub-skills to empower different coding styles across languages and runtimes.
$ npx -y skills add ed3dai/ed3d-plugins --skill coding-effectively --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/coding-effectivelyContext preview
The summary Claude sees to decide when to auto-load this skill.
ALWAYS use this skill when writing or refactoring code. Includes context-dependent sub-skills to empower different coding styles across languages and runtimes.
name: coding-effectively description: ALWAYS use this skill when writing or refactoring code. Includes context-dependent sub-skills to empower different coding styles across languages and runtimes. user-invocable: false
**ALWAYS REQUIRED:**
**CONDITIONAL:** Use these sub-skills when applicable:
When designing features, think about properties upfront. This surfaces design gaps early.
**Discovery questions:**
| Question | Property Type | Example | |----------|---------------|---------| | Does it have an inverse operation? | Roundtrip | `decode(encode(x)) == x` | | Is applying it twice the same as once? | Idempotence | `f(f(x)) == f(x)` | | What quantities are preserved? | Invariants | Length, sum, count unchanged | | Is order of arguments irrelevant? | Commutativity | `f(a, b) == f(b, a)` | | Can operations be regrouped? | Associativity | `f(f(a,b), c) == f(a, f(b,c))` | | Is there a neutral element? | Identity | `f(x, 0) == x` | | Is there a reference implementation? | Oracle | `new(x) == old(x)` | | Can output be easily verified? | Easy to verify | `is_sorted(sort(x))` |
**Common design questions these reveal:**
Surface these during design, not during debugging.
Model the full error space. No shortcuts.
**Don't:**
**Two-tier model:**
1. **User-facing errors**: Semantic exit codes, rich diagnostics, actionable messages 2. **Internal errors**: Programming errors that may panic or use internal types
**Error message format:** Lowercase sentence fragments for "failed to {message}".
Good: failed to connect to database: connection refused Bad: Failed to Connect to Database: Connection Refused Good: invalid configuration: missing required field 'apiKey' Bad: Invalid Configuration: Missing Required Field 'apiKey'
Lowercase fragments compose naturally: `"operation failed: " + error.message` reads correctly.
**The rule of three applies to abstraction:** Don't abstract until you've seen the pattern three times. Three similar lines of code is better than a premature abstraction.
Name files by what they contain, not by generic categories.
**Don't create:**
**Do create:**
**Why this matters:**
**When you're tempted to create utils.ts:** Stop. Ask what the functions have in common. Name the file after that commonality.
Don't emulate Unix on Windows or vice versa. Use each platform's native patterns.
**Bad:** Trying to make Windows paths behave like Unix paths everywhere.
**Good:** Accept platform differences, handle them explicitly.
// Platform-specific behavior
if (process.platform === 'win32') {
// Windows-native approach
} else {
// POSIX approach
}When platform differences are significant, use separate files:
process-spawn.ts // Shared interface and logic process-spawn-unix.ts // Unix-specific implementation process-spawn-windows.ts // Windows-specific implementation
When behavior differs by platform, document it in comments:
// On Windows, this returns CRLF line endings.
// On Unix, this returns LF line endings.
// Callers should normalize if consistent output is needed.
function readTextFile(path: string): string { ... }Don't assume Unix behavior works on Windows. Test explicitly:
Ed's repo of Claude Code plugins, centered around a research-plan-implement workflow. Only a tiny bit cursed. If you're lucky.
Repo: ed3dai/ed3d-plugins
Use when analyzing a large corpus of text, code, or data that exceeds a single agent's effective context - orchestrates parallel Worker subagents, Critic…
Use when creating a new Claude Code plugin or setting up plugin structure - provides complete file organization, manifest format, and component definitions for…
Use when creating specialized subagents for Claude Code plugins or the Task tool - covers description writing for auto-delegation, tool selection, prompt…
Use when creating, releasing, or maintaining a Claude Code Plugin Marketplace - covers marketplace.json schema, version management, release checklists,…
Use when completing development phases or branches to identify and update CLAUDE.md or AGENTS.md files that may have become stale - analyzes what changed,…