propose-project-learning

Propose additions to project CLAUDE.md based on session learnings

9 stars

Best use case

propose-project-learning is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Propose additions to project CLAUDE.md based on session learnings

Teams using propose-project-learning should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/propose-project-learning/SKILL.md --create-dirs "https://raw.githubusercontent.com/jpoutrin/product-forge/main/plugins/claude-code-dev/skills/propose-project-learning/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/propose-project-learning/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How propose-project-learning Compares

Feature / Agentpropose-project-learningStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Propose additions to project CLAUDE.md based on session learnings

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Propose Project Learning

Retrospect on the current session and propose learnings for the project's CLAUDE.md.

## Purpose

After working on a project, identify patterns, conventions, preferences, and rules that should be documented in the project's CLAUDE.md to improve future sessions.

## Usage

```bash
/propose-project-learning        # Analyze and propose learnings
/propose-project-learning --save # Save proposal to ~/.claude/learnings/
```

## What This Captures

| Category | Examples |
|----------|----------|
| **Code conventions** | Naming patterns, file organization, import ordering |
| **Architecture decisions** | Preferred patterns, avoided anti-patterns |
| **Tool preferences** | Test frameworks, linters, formatters |
| **Project-specific rules** | Business logic constraints, domain terminology |
| **Workflow preferences** | Commit style, PR conventions, review process |

## Execution Instructions

When the user runs this command:

### 1. Analyze Current Session

Review the conversation history for:

- **Corrections made** - When the user corrected Claude's approach
- **Explicit preferences** - "Always use X", "Never do Y", "Prefer Z"
- **Repeated patterns** - Consistent choices across multiple files
- **Project conventions** - Naming, structure, organization patterns
- **Tool/framework specifics** - Project-specific configurations or usage

### 2. Check Existing CLAUDE.md

Read the project's CLAUDE.md (if exists) to avoid duplicates:

```bash
cat CLAUDE.md 2>/dev/null || echo "No CLAUDE.md found"
```

Also check for CLAUDE.local.md:

```bash
cat CLAUDE.local.md 2>/dev/null
```

### 3. Generate Proposal

Format the proposal as:

```markdown
# Proposed Learnings for CLAUDE.md

Based on this session, consider adding these to your project's CLAUDE.md:

## Code Conventions

- Use `snake_case` for all Python function names
- Prefer dataclasses over plain dicts for structured data

## Architecture

- All API endpoints go through the service layer, never direct DB access
- Use repository pattern for database operations

## Testing

- Use pytest fixtures, not setUp/tearDown methods
- Mock external services at the client level, not individual methods

## Project-Specific

- The `core` module should have no dependencies on other app modules
- All dates are stored as UTC, converted to local time only in templates

---

To add these to your CLAUDE.md:
1. Review each suggestion
2. Copy relevant items to CLAUDE.md
3. Adjust wording to match your style
```

### 4. Handle --save Flag

If `--save` is provided:

1. **Ensure directory exists**:
   ```bash
   mkdir -p ~/.claude/learnings/projects/{project-slug}/proposals/
   ```

2. **Save proposal** with timestamp:
   ```bash
   # File: ~/.claude/learnings/projects/{project-slug}/proposals/learning-{timestamp}.md
   ```

3. **Confirm**:
   ```
   Proposal saved to ~/.claude/learnings/projects/{project-slug}/proposals/learning-2026-01-09.md

   Review later with: cat ~/.claude/learnings/projects/{project-slug}/proposals/
   ```

### 5. Offer Next Steps

```
Next steps:
  [1] Add to CLAUDE.md now (I'll help edit)
  [2] Save for later (/propose-project-learning --save)
  [3] Dismiss

Select option:
```

## Quality Criteria

Only propose learnings that are:

| Criterion | Description |
|-----------|-------------|
| **Specific** | Concrete rules, not vague guidelines |
| **Actionable** | Claude can follow them in future sessions |
| **Project-relevant** | Not general best practices already known |
| **Validated** | Based on actual session behavior, not assumptions |

## Examples

### Good Learnings

```markdown
- API responses use `{"data": ..., "error": null}` wrapper format
- All Django models inherit from `BaseModel` in `core.models`
- Use `ruff` for linting, not `flake8`
```

### Poor Learnings (Too Generic)

```markdown
- Write clean code
- Follow PEP 8
- Use meaningful variable names
```

## Notes

- This command analyzes the current session context
- Works best after substantial implementation work
- Complements `/propose-forge-improvement` which targets Product Forge itself
- Learnings are project-specific, not global

Related Skills

django-project-setup

9
from jpoutrin/product-forge

Set up a new Django 6.0 project with modern tooling (uv, direnv, HTMX, OAuth, DRF, testing). Use when the user wants to create a Django project from scratch with production-ready configuration.

propose-forge-improvement

9
from jpoutrin/product-forge

Propose improvements or new components for Product Forge

zod

9
from jpoutrin/product-forge

Zod schema validation patterns and type inference. Auto-loads when validating schemas, parsing data, validating forms, checking types at runtime, or using z.object/z.string/z.infer in TypeScript.

typescript-import-style

9
from jpoutrin/product-forge

Merge-friendly import formatting (one-per-line, alphabetical). Auto-loads when writing TypeScript/JavaScript imports to minimize merge conflicts in parallel development. Enforces consistent grouping and sorting.

setup-mcp-auth

9
from jpoutrin/product-forge

Configure authentication for an existing FastMCP server

fastmcp

9
from jpoutrin/product-forge

FastMCP TypeScript framework patterns for MCP servers. Auto-loads when building MCP servers, creating tools/resources/prompts, implementing authentication, configuring transports, or working with FastMCP in TypeScript.

add-mcp-tool

9
from jpoutrin/product-forge

Add a new tool to an existing FastMCP server with guided configuration

add-mcp-resource

9
from jpoutrin/product-forge

Add a new resource or resource template to an existing FastMCP server

plan-with-team

9
from jpoutrin/product-forge

Validate plan file ownership

privacy-compliance

9
from jpoutrin/product-forge

GDPR, CCPA, and privacy compliance guidance for data protection. Use when handling personal data, implementing consent management, or ensuring regulatory compliance across jurisdictions.

oauth

9
from jpoutrin/product-forge

OAuth 2.0 and OpenID Connect implementation patterns. Use when implementing authentication, authorization flows, or integrating with OAuth providers like Google, GitHub, or custom identity providers.

mcp-security

9
from jpoutrin/product-forge

Use when securing MCP servers, preventing prompt injection, implementing authorization, validating user input, or building secure multi-agent pipelines. Provides 5-layer defense architecture patterns.