Skip to content
Back to skills

Learning System

ASecurity

Process learning resources from markdown files, extract content, identify clusters, and create Ship-Learn-Next learning paths

  • 666 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added February 9, 2026
businessrustgokubernetes

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill learning-system --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Learning System?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Learning System
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-learning-system/badge)](https://www.skillsdirectory.com/skills/majiayu000-learning-system)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: learning-system
description: Process learning resources from markdown files, extract content, identify clusters, and create Ship-Learn-Next learning paths
triggers:
  - "process learning inbox"
  - "process learning from"
  - "create learning paths"
---

# Learning System

## Purpose
Transform collected learning resources (URLs + notes) into structured Ship-Learn-Next learning paths.

## Usage

Call this skill with a markdown file containing learning resources:
```
process learning from AI/Inbox.md
```

The file can contain:
- YouTube URLs
- Web article URLs
- PDF file paths
- Your own notes and thoughts about topics
- Any mix of the above

## Workflow

### Phase 1: Parse & Extract

1. **Read the inbox file**
   - Parse markdown content
   - Identify URLs (YouTube, web articles)
   - Extract user notes (text content, bullet points)
   - Report summary: "Found X YouTube videos, Y articles, Z paragraphs of notes"

2. **Extract content from URLs**
   - For YouTube URLs: Call `youtube-transcript` skill
   - For web article URLs: Call `article-extractor` skill
   - For PDF paths: Read and extract text directly
   - Process in parallel where possible
   - Report failures gracefully: "Extracted X/Y sources (Z failed)"
   - Continue processing even if some extractions fail

### Phase 2: Analyze & Cluster

3. **Unified analysis**
   - Analyze ALL content together:
     * Extracted transcripts and articles
     * User's original notes
     * Context from markdown structure (headings, sections)

4. **Identify learning clusters**
   - Look for topic patterns and themes
   - Group related sources together
   - Consider user's notes as strong signals for clustering
   - Create proposed clusters with:
     * Suggested cluster name
     * List of URLs belonging to cluster
     * List of user notes related to cluster
     * Rationale for grouping

### Phase 3: Interactive Approval

5. **Present clusters one by one**
   - For each cluster, show:
     ```
     Cluster: "[Suggested Name]"

     Sources:
     - YouTube: "[Title]" (transcript available)
     - Article: "[Title]" (from [domain])
     - Your note: "[first 100 chars...]"

     Rationale: [Why these are grouped together]

     Options:
     1. Approve as-is
     2. Rename cluster
     3. Split into multiple topics
     4. Merge with another cluster
     5. Exclude some sources
     ```

6. **Handle user feedback**
   - Listen for natural language responses:
     * "Approve" / "looks good" → Accept cluster
     * "Rename to [X]" → Change cluster name
     * "Split - [reason]" → Divide cluster
     * "Merge with cluster N" → Combine clusters
     * "Remove [source]" → Exclude specific item

   - Apply changes immediately and confirm
   - Continue to next cluster
   - Keep track of all decisions

7. **Final confirmation**
   - Show summary of all approved clusters
   - Confirm: "Ready to create N learning paths in 3_Resources/?"
   - Wait for explicit approval

### Phase 4: Create Learning Paths

8. **Check for existing paths**
   - For each cluster, check if `3_Resources/[topic-name]/` exists
   - If exists: This is a MERGE operation (add to existing path)
   - If new: This is a CREATE operation

9. **Create folder structure**
   - For NEW paths:
     ```
     3_Resources/[topic-name]/
     ├── README.md              # Ship-Learn-Next plan
     ├── sources/               # Extracted content
     │   ├── [source-1].md
     │   └── [source-2].md
     └── notes/                 # User's notes
         └── [note].md
     ```

   - For MERGE operations:
     * Add new source files to `sources/`
     * Add new notes to `notes/`
     * Update README.md with new content

10. **Generate Ship-Learn-Next plan**
    - Use the template from `ship-learn-next-template.md`
    - Fill in:
      * Title: Cluster name
      * Overview: Brief description of learning path
      * Ship section: 3-5 practical projects to build
      * Learn section: Links to all sources and notes
      * Next section: Advanced topics and next steps
      * Topics tags: Extracted keywords
      * Status: "seedling" for new paths

    - For MERGE: Update existing sections intelligently:
      * Add new items to Ship/Learn sections
      * Update "Last Updated" date
      * Preserve existing progress tracking

11. **Save extracted content**
    - For each source, create markdown file in `sources/`:
      ```markdown
      ---
      source: [original URL]
      type: [youtube/article/pdf]
      title: [extracted title]
      extracted: [date]
      ---

      # [Title]

      [Extracted content]
      ```

    - For user notes, create file in `notes/`:
      ```markdown
      ---
      from: [original inbox file]
      extracted: [date]
      ---

      [User's note content]
      ```

12. **Handle multi-topic sources**
    - If a source belongs to multiple clusters:
      * Save full content in PRIMARY cluster (user specified during approval)
      * Add reference link in SECONDARY clusters:
        ```markdown
        ## Related Resources
        See also: [[../[primary-topic]/sources/[file]|[Title]]]
        ```

### Phase 5: Cleanup & Tracking

13. **Update inbox file**
    - Move processed items to "## Processed (DATE)" section
    - Mark with `[x]` checkboxes
    - Add path reference: `→ [topic-name]`
    - Example:
      ```markdown
      ## Processed (2025-11-22)
      - [x] https://youtube.com/watch?v=abc → kubernetes-networking
      - [x] My notes about service mesh → kubernetes-networking
      ```
    - Preserve unprocessed items in original location

14. **Update resources index**
    - Add new learning paths to `3_Resources/index.md`
    - Format:
      ```markdown
      - [[kubernetes-networking/README|Kubernetes Networking]] 🌱 seedling
      ```
    - For merged paths: Update "Last Updated" timestamp

15. **Generate summary report**
    ```
    ✅ Processing Complete!

    Created 2 new learning paths:
    - 3_Resources/kubernetes-networking/ (3 sources, 1 note)
    - 3_Resources/rust-async/ (2 sources, 2 notes)

    Merged into 1 existing path:
    - 3_Resources/llm-agents/ (+2 sources)

    Processed: 7/8 sources
    Failed: 1 (paywalled article - saved URL for manual review)

    Next steps:
    - Review learning plans in 3_Resources/
    - Start with "Ship" sections for hands-on learning
    - Update progress as you learn
    ```

## Error Handling

### Extraction Failures
- If YouTube transcript unavailable:
  * Report in summary
  * Save URL in learning path with note: "⚠️ Transcript unavailable - watch manually"
  * Continue processing

- If article blocked/paywalled:
  * Report in summary
  * Save URL with note: "⚠️ Manual extraction needed"
  * Continue processing

- If PDF unreadable:
  * Report in summary
  * Save file path with note: "⚠️ Text extraction failed"
  * Continue processing

### Clustering Issues
- If sources too diverse (no clear clusters):
  * Report: "Sources are too diverse for automatic clustering"
  * Offer: "Create individual learning paths for each source?" or "Group all into 'Mixed Topics' for manual organization?"
  * Let user decide

- If only 1-2 sources:
  * Still create learning path but note it's minimal
  * Suggest: "This is a small learning path - consider collecting more resources before studying"

### Ambiguous Classifications
- If source could fit multiple topics equally:
  * Present during approval: "This resource covers both X and Y equally - which should be primary?"
  * Wait for user decision
  * Apply primary/secondary reference strategy

### Existing Path Collisions
- ALWAYS merge into existing paths
- Report: "Merged X new sources into existing [topic-name]/"
- Show what was added in summary

## Best Practices

1. **Process regularly**: Run weekly or when you have 5+ resources collected
2. **Add context**: Include your thoughts in the inbox - helps clustering
3. **Review plans**: The generated Ship-Learn-Next plans are starting points - refine them
4. **Update progress**: Check off items as you learn, update completion %
5. **Merge related paths**: If you later realize two paths should be one, manually merge folders
6. **Archive completed**: Move finished learning paths to `4_Archives/resources/`

## Technical Notes

- Depends on: `youtube-transcript` and `article-extractor` skills
- Creates folders with kebab-case naming (e.g., `kubernetes-networking`)
- Uses Obsidian wikilinks for cross-references
- Compatible with Dataview queries for tracking
- Preserves frontmatter for metadata management
- Status progression: seedling 🌱 → sapling 🌿 → evergreen 🌳 (update manually as path matures)

## Example Session

```
User: process learning from AI/Inbox.md

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.