Internal skill. Use cc10x-router for all development tasks.
Maintains persistent memory across sessions in `.claude/cc10x/` using permission-free Read/Edit tools. Mandatory at every workflow start (loads activeContext, patterns, progress) and end (updates with decisions/learnings) to prevent context loss and repeated mistakes.
/plugin marketplace add romiluz13/cc10x/plugin install cc10x@cc10xThis skill is limited to using the following tools:
EVERY WORKFLOW MUST:
1. LOAD memory at START (and before key decisions)
2. UPDATE memory at END (and after learnings/decisions)
If memory is not loaded: You work blind, repeat mistakes, lose context. If decisions made without checking memory: You contradict prior choices, waste effort.
If memory is not updated: Next session loses everything learned. If learnings not recorded: Same mistakes will be repeated.
BOTH SIDES ARE NON-NEGOTIABLE.
ALL memory operations are PERMISSION-FREE using the correct tools.
| Operation | Tool | Permission |
|---|---|---|
| Create memory directory | Bash(command="mkdir -p .claude/cc10x") | FREE |
| Read memory files | Read(file_path=".claude/cc10x/activeContext.md") | FREE |
| Create NEW memory file | Write(file_path="...", content="...") | FREE (file doesn't exist) |
| Update EXISTING memory | Edit(file_path="...", old_string="...", new_string="...") | FREE |
| Save plan/design files | Write(file_path="docs/plans/...", content="...") | FREE |
| Tool | Use For | Asks Permission? |
|---|---|---|
| Write | Creating NEW files | NO (if file doesn't exist) |
| Write | Overwriting existing files | YES - asks "Do you want to overwrite?" |
| Edit | Updating existing files | NO - always permission-free |
RULE: Use Write for NEW files, Edit for UPDATES.
NEVER use Bash compound commands (mkdir && cat) - they ASK PERMISSION.
ALWAYS use Read tool for reading files - it's PERMISSION-FREE.
# WRONG (asks permission - compound Bash command)
mkdir -p .claude/cc10x && cat .claude/cc10x/activeContext.md
# RIGHT (permission-free - separate tools)
Bash(command="mkdir -p .claude/cc10x")
Read(file_path=".claude/cc10x/activeContext.md")
NEVER use heredoc writes (cat > file << 'EOF') - they ASK PERMISSION.
Use Write for NEW files, Edit for EXISTING files.
# WRONG (asks permission - heredoc)
cat > .claude/cc10x/activeContext.md << 'EOF'
content here
EOF
# RIGHT for NEW files (permission-free)
Write(file_path=".claude/cc10x/activeContext.md", content="content here")
# RIGHT for EXISTING files (permission-free)
Edit(file_path=".claude/cc10x/activeContext.md",
old_string="# Active Context",
new_string="# Active Context\n\n[new content]")
"My memory resets between sessions. The Memory Bank is my ONLY link to previous work."
Without memory persistence:
Memory is the difference between an expert who learns and a novice who forgets.
.claude/
└── cc10x/
├── activeContext.md # Current focus + learnings + decisions (MOST IMPORTANT)
├── patterns.md # Project patterns, conventions, gotchas
└── progress.md # What works, what's left, verification evidence
Optimize context for relevance, not completeness:
Use for simple tasks and handoffs:
Use for complex tasks and session starts:
Reference when needed:
Good context accelerates work; bad context creates confusion.
Current state of work - ALWAYS check this first:
# Active Context
## Current Focus
[What we're actively working on RIGHT NOW]
## Recent Changes
- [Change 1] - [file:line]
- [Change 2] - [file:line]
## Next Steps
1. [Immediate next action]
2. [Following action]
3. [After that]
## Active Decisions
| Decision | Choice | Why |
|----------|--------|-----|
| [Decision 1] | [What we chose] | [Reasoning] |
| [Decision 2] | [What we chose] | [Reasoning] |
## Learnings This Session
- [Insight 1]: [What we learned]
- [Insight 2]: [What we learned]
## Blockers / Issues
- [Blocker 1]: [Status]
## User Preferences Discovered
- [Preference]: [Details]
## Last Updated
[timestamp]
Project-specific knowledge that persists:
# Project Patterns
## Architecture Patterns
- [Pattern]: [How this project implements it]
## Code Conventions
- [Convention]: [Example]
## File Structure
- [File type]: [Where it goes, naming convention]
## Testing Patterns
- [Test type]: [How to write, where to put]
## Common Gotchas
- [Gotcha]: [How to avoid / solution]
## API Patterns
- [Endpoint pattern]: [Convention used]
## Error Handling
- [Error type]: [How project handles it]
## Dependencies
- [Dependency]: [Why used, how configured]
What's done, what's not:
# Progress Tracking
## Current Workflow
[PLAN | BUILD | REVIEW | DEBUG]
## Completed
- [x] [Task 1] - [verification evidence]
- [x] [Task 2] - [verification evidence]
## In Progress
- [ ] [Task 3] - [current status]
## Remaining
- [ ] [Task 4]
- [ ] [Task 5]
## Verification Evidence
| Check | Command | Result |
|-------|---------|--------|
| Tests | `npm test` | exit 0 (34/34) |
| Build | `npm run build` | exit 0 |
## Known Issues
- [Issue 1]: [Status]
## Evolution of Decisions
- [Date]: [Decision changed from X to Y because Z]
## Implementation Results (append-only after build)
| Planned | Actual | Deviation Reason |
|---------|--------|------------------|
| [What was planned] | [What happened] | [Why it differed] |
| Trigger | Action | Why |
|---|---|---|
| Session start | Load ALL 3 files | Fresh context needed |
| Workflow start | Load ALL 3 files | Before BUILD/REVIEW/DEBUG/PLAN |
| Continuation session | Load ALL 3 files | Resume from where we left |
| User says "continue" | Load activeContext.md | Get current state |
| Before This Action | Read This File | Why |
|---|---|---|
| Making architectural decision | patterns.md | Check existing patterns |
| Choosing implementation approach | patterns.md + activeContext.md | Align with conventions + prior decisions |
| Starting to build something | progress.md | Check if already done |
| Debugging an error | activeContext.md + patterns.md | May have seen before + known gotchas |
| Planning next steps | progress.md | Know what's remaining |
| Reviewing code | patterns.md | Apply project conventions |
| Making any decision | activeContext.md (Active Decisions table) | Check prior decisions |
| Situation | Action | Why |
|---|---|---|
| User references "what we did" | Load activeContext.md | Get history |
| You're about to repeat work | Load progress.md | Check if done |
| You're unsure of convention | Load patterns.md | Project standards |
| Error seems familiar | Load patterns.md (Common Gotchas) | Known issues |
| Decision feels arbitrary | Load activeContext.md | Prior reasoning |
What do I need? → Which file?
─────────────────────────────────────────
Current state / focus → activeContext.md
Prior decisions + reasoning → activeContext.md (Active Decisions)
What we learned → activeContext.md (Learnings)
Project conventions → patterns.md
How to structure code → patterns.md
Common gotchas to avoid → patterns.md
What's done / remaining → progress.md
Verification evidence → progress.md
Before ANY decision, ask:
If memory has relevant info:
If memory is empty/irrelevant:
Use separate tool calls (PERMISSION-FREE):
# Step 1: Create directory (single Bash command - permission-free)
Bash(command="mkdir -p .claude/cc10x")
# Step 2: Load ALL 3 memory files using Read tool (permission-free)
Read(file_path=".claude/cc10x/activeContext.md")
Read(file_path=".claude/cc10x/patterns.md")
Read(file_path=".claude/cc10x/progress.md")
# Step 3: Git Context - Understand project state (RECOMMENDED)
Bash(command="git status") # Current working state
Bash(command="git ls-files | head -50") # Project file structure
Bash(command="git log --oneline -10") # Recent commits
NEVER use this (asks permission):
# WRONG - compound command asks permission
mkdir -p .claude/cc10x && cat .claude/cc10x/activeContext.md
If file doesn't exist: Read tool returns an error - that's fine, means starting fresh.
MUST update before completing ANY workflow. Use Edit tool (NO permission prompt):
# First, read the existing content
Read(file_path=".claude/cc10x/activeContext.md")
# Then use Edit to replace (matches first line, replaces entire content)
Edit(file_path=".claude/cc10x/activeContext.md",
old_string="# Active Context",
new_string="# Active Context
## Current Focus
[What we just finished / what's next]
## Recent Changes
- [Changes made this session]
## Next Steps
1. [What to do next]
## Active Decisions
| Decision | Choice | Why |
|----------|--------|-----|
| [Decisions made] | [Choice] | [Reason] |
## Learnings This Session
- [What we learned]
## Last Updated
[current date/time]")
WHY Edit not Write? Write asks "Do you want to overwrite?" for existing files. Edit is always permission-free.
Read existing patterns.md, then append using Edit:
# Read existing content
Read(file_path=".claude/cc10x/patterns.md")
# Append by matching end of file and adding new content
Edit(file_path=".claude/cc10x/patterns.md",
old_string="[last section heading]",
new_string="[last section heading]
## [New Category]
- [Pattern]: [Details learned]")
# Read progress.md, find the task, mark it complete using Edit
Read(file_path=".claude/cc10x/progress.md")
Edit(file_path=".claude/cc10x/progress.md",
old_string="- [ ] [Task being completed]",
new_string="- [x] [Task being completed] - [verification evidence]")
ALL agents MUST:
Failure to update memory = incomplete work.
If you catch yourself:
STOP. Load/update memory FIRST.
| Excuse | Reality |
|---|---|
| "I know what we decided" | Check the Active Decisions table. |
| "Small task, no need" | Small tasks have context too. Always update. |
| "I'll remember" | You won't. Conversation compacts. Write it down. |
| "Memory is optional" | Memory is MANDATORY. No exceptions. |
Cannot check all boxes? Memory cycle incomplete.
START → Load Memory → Do Work → Update Memory → END
↑ ↑ ↑
MANDATORY Check before MANDATORY
decisions
The Full Cycle:
1. LOAD all memory (START)
2. CHECK memory before decisions (DURING)
3. UPDATE memory with learnings (END)
Memory persistence is not a feature. It's a requirement.
Your effectiveness depends entirely on memory accuracy. Treat it with the same importance as the code itself.
READ without WRITE = Stale memory. WRITE without READ = Contradictory decisions. Both are equally critical.
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.