원클릭으로
원클릭으로
THE ONLY ENTRY POINT FOR CC-P4P. This skill MUST be activated for ANY product management task - never skip. Use this skill when: writing specs, synthesizing research, planning roadmaps, drafting stakeholder updates, defining metrics, or ANY PM request. Triggers: spec, prd, feature, requirement, user story, acceptance criteria, research, interview, feedback, survey, competitive, persona, insight, roadmap, priority, plan, timeline, rice, moscow, okr, quarter, update, status, stakeholder, announcement, launch, report, metric, kpi, dashboard, retention, conversion, north star, product, pm, brainstorm. CRITICAL: Execute workflow immediately. Never just describe capabilities.
Internal skill. Use cc-p4p-router for all PM tasks.
Internal skill. Use cc-p4p-router for all PM tasks.
Internal skill. Use cc-p4p-router for all PM tasks.
Internal skill. Use cc-p4p-router for all PM tasks.
Internal skill. Use cc-p4p-router for all PM tasks.
| name | pm-memory |
| description | Internal skill. Use cc-p4p-router for all PM tasks. |
| allowed-tools | Read, Write, Edit, Bash |
EVERY WORKFLOW MUST:
1. LOAD memory at START (and before key decisions)
2. UPDATE memory at END (and after learnings/decisions)
Brevity Rule: Memory is an index, not a document. Be brief -- one line per item.
cc-p4p memory is a small, stable, permission-free Markdown database used for:
.claude/cc-p4p/activeContext.md
.claude/cc-p4p/insights.md
.claude/cc-p4p/roadmap-state.md
docs/specs/*, docs/research/*, docs/roadmap/*
Information "graduates" to more durable layers:
activeContext.md (Recent Work / Decisions)insights.md (User Research / Competitive / Themes)roadmap-state.md (Current Priorities)docs/specs/* or docs/research/* + link from activeContextALL memory operations are PERMISSION-FREE using the correct tools.
| Operation | Tool | Permission |
|---|---|---|
| Create memory directory | Bash(command="mkdir -p .claude/cc-p4p") | FREE |
| Read memory files | Read(file_path=".claude/cc-p4p/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 spec/research files | Write(file_path="docs/specs/...", content="...") | FREE |
| Tool | Use For | Asks Permission? |
|---|---|---|
| Write | Creating NEW files | NO (if file doesn't exist) |
| Write | Overwriting existing files | YES |
| Edit | Updating existing files | NO - always permission-free |
RULE: Use Write for NEW files, Edit for UPDATES.
NEVER use Bash compound commands -- they ASK PERMISSION. ALWAYS use Read tool for reading files -- it's PERMISSION-FREE.
.claude/
cc-p4p/
activeContext.md # Current focus + decisions + open questions (MOST IMPORTANT)
insights.md # Research insights, competitive intel, customer themes
roadmap-state.md # Now/Next/Later priorities, shipped items, dependencies
Edit(...) + Read(...) verify.### Memory Notes section. Router persists via task-enforced Memory Update.Update memory IMMEDIATELY when you notice:
Checkpoint Pattern:
Edit(file_path=".claude/cc-p4p/activeContext.md",
old_string="## Current Focus",
new_string="## Current Focus\n\n[Updated focus + key decisions]")
Read(file_path=".claude/cc-p4p/activeContext.md") # Verify
# PM Active Context
<!-- CC-P4P: Do not rename headings. Used as Edit anchors. -->
## Current Focus
[Active work -- what PM task is in progress]
## Recent Work
- [Date] [What was done] - [artifact reference]
## Decisions
- [Decision]: [Choice] - [Why]
## Open Questions
- [Question] - [Who should answer] - [Blocking/Non-blocking]
## References
- Spec: `docs/specs/...` (or N/A)
- Research: `docs/research/...` (or N/A)
- Roadmap: `docs/roadmap/...` (or N/A)
## Last Updated
[timestamp]
# PM Insights
<!-- CC-P4P: Do not rename headings. Used as Edit anchors. -->
## User Research Insights
- [Insight]: [Evidence] - [Source: interview/survey/analytics]
## Competitive Intelligence
- [Competitor]: [Finding] - [Implication for us]
## Customer Feedback Themes
- [Theme]: [Frequency] - [Severity] - [Example quote]
## Personas
- [Persona name]: [Brief description] - [Key need]
## Last Updated
[timestamp]
# PM Roadmap State
<!-- CC-P4P: Do not rename headings. Used as Edit anchors. -->
## Current Priorities
### Now (In Progress)
- [Item]: [Owner] - [Status]
### Next (Planned)
- [Item]: [Priority score] - [Dependencies]
### Later (Future)
- [Item]: [Strategic rationale]
## Shipped
- [Date] [Item] - [Impact/metrics]
## Dependencies
- [Dependency]: [Owner] - [Need-by date] - [Status]
## Capacity Notes
- [Team/resource considerations]
## Last Updated
[timestamp]
| Anchor | File | Stability |
|---|---|---|
## Recent Work | activeContext | GUARANTEED |
## Decisions | activeContext | GUARANTEED |
## Open Questions | activeContext | GUARANTEED |
## References | activeContext | GUARANTEED |
## Last Updated | all files | GUARANTEED (fallback) |
## User Research Insights | insights | GUARANTEED |
## Competitive Intelligence | insights | GUARANTEED |
## Customer Feedback Themes | insights | GUARANTEED |
## Current Priorities | roadmap-state | GUARANTEED |
## Shipped | roadmap-state | GUARANTEED |
## Dependencies | roadmap-state | GUARANTEED |
NEVER use as anchors:
| Col | Col |)- specific text)Every memory edit MUST follow this exact sequence:
Read(file_path=".claude/cc-p4p/activeContext.md")
# Check if intended anchor exists in the content you just read
# If anchor not found -> use "## Last Updated" as fallback
Edit(file_path=".claude/cc-p4p/activeContext.md",
old_string="## Recent Work",
new_string="## Recent Work\n- [New entry]\n")
Read(file_path=".claude/cc-p4p/activeContext.md")
# Confirm your change appears. If not -> STOP and retry.
Hard rules:
# PM Active Context, # PM Insights, # PM Roadmap State).## Current Focus, ## Last Updated).Edit(...), Read back the file and confirm the intended change exists.If an Edit does not apply cleanly:
old_string anchor.# Step 1: Create directory
Bash(command="mkdir -p .claude/cc-p4p")
# Step 2: Load ALL 3 memory files
Read(file_path=".claude/cc-p4p/activeContext.md")
Read(file_path=".claude/cc-p4p/insights.md")
Read(file_path=".claude/cc-p4p/roadmap-state.md")
If file doesn't exist: Read tool returns an error -- that's fine, means starting fresh.
# Read existing content
Read(file_path=".claude/cc-p4p/activeContext.md")
# Add entry to Recent Work
Edit(file_path=".claude/cc-p4p/activeContext.md",
old_string="## Recent Work",
new_string="## Recent Work\n- [YYYY-MM-DD] [What was done] - [artifact path]\n")
# VERIFY
Read(file_path=".claude/cc-p4p/activeContext.md")
ALL agents MUST:
If an agent cannot safely update memory (e.g., no Edit tool -- comms-drafter):
### Memory Notes sectionFailure to update memory = incomplete work.
If you catch yourself:
STOP. Load/update memory FIRST.
| Excuse | Reality |
|---|---|
| "I know what we decided" | Check the Decisions section. |
| "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. |