@looplia/looplia-cli 0.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +33216 -0
  3. package/package.json +55 -0
  4. package/plugins/looplia-core/.claude-plugin/plugin.json +10 -0
  5. package/plugins/looplia-core/commands/build-workflow.md +92 -0
  6. package/plugins/looplia-core/commands/build.md +71 -0
  7. package/plugins/looplia-core/commands/list-workflows.md +55 -0
  8. package/plugins/looplia-core/commands/run.md +50 -0
  9. package/plugins/looplia-core/hooks/hooks.json +27 -0
  10. package/plugins/looplia-core/scripts/hooks/compact-inject-state.sh +36 -0
  11. package/plugins/looplia-core/scripts/hooks/post-write-validate.sh +81 -0
  12. package/plugins/looplia-core/scripts/hooks/stop-guard.sh +56 -0
  13. package/plugins/looplia-core/skills/plugin-registry-scanner/SKILL.md +108 -0
  14. package/plugins/looplia-core/skills/plugin-registry-scanner/scripts/scan-plugins.ts +221 -0
  15. package/plugins/looplia-core/skills/plugin-registry-scanner/test/scan-plugins.test.ts +256 -0
  16. package/plugins/looplia-core/skills/search/SKILL.md +174 -0
  17. package/plugins/looplia-core/skills/skill-capability-matcher/SKILL.md +378 -0
  18. package/plugins/looplia-core/skills/workflow-executor/SKILL.md +469 -0
  19. package/plugins/looplia-core/skills/workflow-executor-inline/SKILL.md +217 -0
  20. package/plugins/looplia-core/skills/workflow-schema-composer/SCHEMA.md +214 -0
  21. package/plugins/looplia-core/skills/workflow-schema-composer/SKILL.md +373 -0
  22. package/plugins/looplia-core/skills/workflow-schema-composer/templates/workflow.md.template +44 -0
  23. package/plugins/looplia-core/skills/workflow-validator/SKILL.md +171 -0
  24. package/plugins/looplia-core/skills/workflow-validator/scripts/validate.ts +244 -0
  25. package/plugins/looplia-writer/.claude-plugin/plugin.json +10 -0
  26. package/plugins/looplia-writer/README.md +107 -0
  27. package/plugins/looplia-writer/skills/content-documenter/SKILL.md +189 -0
  28. package/plugins/looplia-writer/skills/id-generator/SKILL.md +120 -0
  29. package/plugins/looplia-writer/skills/idea-synthesis/SKILL.md +162 -0
  30. package/plugins/looplia-writer/skills/media-reviewer/SKILL.md +105 -0
  31. package/plugins/looplia-writer/skills/user-profile-reader/SKILL.md +94 -0
  32. package/plugins/looplia-writer/skills/writing-enhancer/SKILL.md +34 -0
  33. package/plugins/looplia-writer/skills/writing-kit-assembler/SKILL.md +206 -0
  34. package/plugins/looplia-writer/workflows/writing-kit.md +134 -0
@@ -0,0 +1,189 @@
1
+ ---
2
+ name: content-documenter
3
+ description: |
4
+ Generate structured ContentSummary JSON from analyzed content.
5
+ Use after media-reviewer to produce final output with all 16 fields.
6
+ tools: Read, Write
7
+ ---
8
+
9
+ # Content Documenter Skill
10
+
11
+ Transforms media-reviewer analysis into structured JSON documentation.
12
+
13
+ ## What This Skill Does
14
+
15
+ Takes your media-reviewer analysis and produces ContentSummary JSON
16
+ with all 16 required fields.
17
+
18
+ ## Input
19
+
20
+ You should have already used media-reviewer skill which provides:
21
+ - Deep understanding of content structure
22
+ - Core ideas and their connections
23
+ - Narrative flow analysis
24
+ - Key moments and quotes with timestamps
25
+ - Thematic patterns
26
+
27
+ ## Output Fields
28
+
29
+ ### Core Fields (7)
30
+
31
+ 1. **contentId** (string)
32
+ - Copy from input file frontmatter id field
33
+
34
+ 2. **headline** (string, 10-200 chars)
35
+ - One compelling sentence capturing the essence
36
+ - Should make someone want to read more
37
+ - Focus on the unique value or insight
38
+
39
+ 3. **tldr** (string, 20-500 chars)
40
+ - 3-5 sentence summary
41
+ - Cover the main points concisely
42
+ - Answer: "What is this about and why does it matter?"
43
+
44
+ 4. **bullets** (string[], 1-10 items)
45
+ - Key points as bullet list
46
+ - Each bullet = one distinct insight
47
+ - Ordered by importance or logical flow
48
+
49
+ 5. **tags** (string[], 1-20 items)
50
+ - Topic tags for categorization
51
+ - Include broad tags (e.g., "AI") and specific (e.g., "Constitutional AI")
52
+ - Lowercase, no special characters
53
+
54
+ 6. **sentiment** ("positive" | "neutral" | "negative")
55
+ - Overall tone of content
56
+ - Based on language and framing, not topic
57
+
58
+ 7. **category** (string)
59
+ - Content type: article, video, podcast, tutorial, interview, etc.
60
+
61
+ 8. **score.relevanceToUser** (number, 0-1)
62
+ - Based on user-profile.json topics
63
+ - 1.0 = perfectly matches user interests
64
+ - 0.0 = no relevance to user interests
65
+ - Calculate: sum(matched topic weights) / sum(all topic weights)
66
+
67
+ ### Documentary Fields (8)
68
+
69
+ 9. **overview** (string, min 50 chars)
70
+ - 2-3 rich paragraphs introducing the material
71
+ - Write for someone unfamiliar with the content
72
+ - Cover: what it is, who it's for, why it matters
73
+ - Set the stage for detailed analysis
74
+
75
+ 10. **keyThemes** (string[], 3-7 items)
76
+ - Main topics/themes identified
77
+ - Broader than tags, more conceptual
78
+ - Examples: "The tension between safety and capability"
79
+
80
+ 11. **detailedAnalysis** (string, min 100 chars)
81
+ - Documentary-style breakdown
82
+ - Follow the content's structure
83
+ - Explain each major section/segment
84
+ - Include specific details and examples
85
+
86
+ 12. **narrativeFlow** (string, min 50 chars)
87
+ - How the content progresses
88
+ - Explain the arc and transitions
89
+ - Show how ideas build on each other
90
+ - Note pacing and structure choices
91
+
92
+ 13. **coreIdeas** (CoreIdea[], 1-10 items)
93
+ Each item has:
94
+ - concept: string - the idea name
95
+ - explanation: string (min 10 chars) - what it means in this context
96
+ - examples?: string[] - specific examples from content
97
+
98
+ 14. **importantQuotes** (Quote[], 0-20 items)
99
+ Each item has:
100
+ - text: string - EXACT verbatim quote (never paraphrase!)
101
+ - timestamp?: string - HH:MM:SS or MM:SS format (for video/audio)
102
+ - context?: string - what was being discussed when this was said
103
+
104
+ 15. **context** (string, min 20 chars)
105
+ - Background needed to understand the content
106
+ - Prerequisites or prior knowledge assumed
107
+ - Historical or situational context
108
+ - Related work or references mentioned
109
+
110
+ 16. **relatedConcepts** (string[], 0-15 items)
111
+ - Related topics mentioned or implied
112
+ - Connections to other ideas or fields
113
+ - What someone might want to learn next
114
+
115
+ ## Timestamp Format
116
+
117
+ For video/audio content:
118
+ - `0:30` - 30 seconds
119
+ - `2:45` - 2 minutes 45 seconds
120
+ - `1:30:00` - 1 hour 30 minutes
121
+ - Always use the format from the source (don't normalize)
122
+
123
+ ## JSON Output Example
124
+
125
+ ```json
126
+ {
127
+ "contentId": "abc123",
128
+ "headline": "Constitutional AI introduces a novel approach to aligning language models through self-critique",
129
+ "tldr": "This video explains Constitutional AI, Anthropic's method for training helpful and harmless AI assistants. The approach uses a set of principles (a 'constitution') to guide the model's self-improvement, reducing the need for human feedback while maintaining safety.",
130
+ "bullets": [
131
+ "Constitutional AI uses self-critique guided by explicit principles",
132
+ "The method reduces reliance on human feedback for safety training",
133
+ "Models learn to identify and correct their own harmful outputs"
134
+ ],
135
+ "tags": ["ai", "safety", "alignment", "constitutional-ai", "anthropic", "rlhf"],
136
+ "sentiment": "positive",
137
+ "category": "video",
138
+ "score": { "relevanceToUser": 0.85 },
139
+ "overview": "This comprehensive video from Anthropic introduces Constitutional AI...",
140
+ "keyThemes": [
141
+ "AI Safety and Alignment",
142
+ "Self-supervised learning for safety",
143
+ "Reducing human feedback requirements",
144
+ "Explicit principles for AI behavior"
145
+ ],
146
+ "detailedAnalysis": "The video opens with a clear problem statement...",
147
+ "narrativeFlow": "The presentation follows a classic problem-solution structure...",
148
+ "coreIdeas": [
149
+ {
150
+ "concept": "Constitutional AI",
151
+ "explanation": "An alignment approach where AI models critique and revise their own outputs based on explicit principles",
152
+ "examples": ["A model generating a harmful response, then self-critiquing"]
153
+ }
154
+ ],
155
+ "importantQuotes": [
156
+ {
157
+ "text": "The key insight is that we can use AI to supervise AI",
158
+ "timestamp": "12:34",
159
+ "context": "Explaining the core mechanism that makes Constitutional AI scalable"
160
+ }
161
+ ],
162
+ "context": "This video builds on prior work in RLHF...",
163
+ "relatedConcepts": ["RLHF", "red teaming", "scalable oversight", "AI alignment"]
164
+ }
165
+ ```
166
+
167
+ ## Quality Checklist
168
+
169
+ Before outputting, verify:
170
+ - All 16 fields are present
171
+ - All minimum lengths are met
172
+ - Quotes are exact (verbatim)
173
+ - Timestamps are included for video/audio
174
+ - contentId matches input file
175
+ - relevanceToUser is calculated from user profile
176
+ - JSON is valid
177
+
178
+ ## Important Rules
179
+
180
+ - Include ALL 16 fields - never omit any
181
+ - Use exact verbatim quotes - never paraphrase
182
+ - Include timestamps when source has them
183
+ - Meet all minimum character requirements
184
+ - Follow the JSON schema exactly
185
+ - Base relevanceToUser on actual user profile
186
+ - Never paraphrase quotes
187
+ - Never add interpretation beyond source
188
+ - Never omit required fields
189
+ - Never guess timestamps - only include if known
@@ -0,0 +1,120 @@
1
+ ---
2
+ name: id-generator
3
+ description: Generate intelligent session IDs based on detected content source type.
4
+ Analyzes ContentSummary and creates meaningful IDs (podcast-xyz, transcript-abc, etc.).
5
+ ---
6
+
7
+ # ID Generator Skill
8
+
9
+ Expert at generating meaningful session IDs based on content source type and characteristics.
10
+
11
+ ## What This Skill Does
12
+
13
+ - Reads ContentSummary JSON with detectedSource field
14
+ - Analyzes source type and main topic/theme
15
+ - Generates human-readable, meaningful session ID
16
+ - Returns ID with confidence score and rationale
17
+ - Enables reusable content identification
18
+
19
+ ## ID Generation Process
20
+
21
+ Follow these 5 steps:
22
+
23
+ ### Step 1: Validate Input
24
+ - Confirm ContentSummary has required fields
25
+ - Check if detectedSource field exists
26
+ - Note the content's main topic/headline/category
27
+
28
+ ### Step 2: Analyze Source Type
29
+ - Review detectedSource value (podcast, transcript, article, youtube, twitter, text, other)
30
+ - Consider content characteristics:
31
+ - **Podcast**: Audio transcript with timestamps, speaker markers, conversational flow
32
+ - **Transcript**: Conversational content, dialogue, timestamps, multiple speakers
33
+ - **Article**: Written structure, sections, headlines, formal tone
34
+ - **YouTube**: Video description, channel info, timestamps
35
+ - **Twitter**: Social media context, short-form, engagement metrics
36
+ - **Text**: Unstructured thoughts, raw content, raw notes
37
+ - **Other**: Any other content type
38
+
39
+ ### Step 3: Extract Topic Keywords
40
+ - Identify main topic from headline, category, or keyThemes
41
+ - Select 1-2 most significant keywords
42
+ - Avoid generic terms, prefer specific subject matter
43
+ - Examples: "healthcare", "ai", "python", "productivity"
44
+
45
+ ### Step 4: Generate Base ID
46
+ - Format: `{source-type}-{date}-{topic}`
47
+ - Source prefix from detectedSource (lowercase)
48
+ - Date in YYYY-MM-DD format
49
+ - Topic as 1-2 words (hyphen-separated, lowercase)
50
+ - Example: `podcast-2024-12-08-ai-healthcare`
51
+
52
+ ### Step 5: Quality Check & Return
53
+ - Ensure ID is lowercase, hyphen-separated
54
+ - Validate length (20-50 characters preferred)
55
+ - Return JSON with:
56
+ - `contentId`: Generated ID
57
+ - `detectedSource`: Confirmed source type
58
+ - `sourceConfidence`: 0.0-1.0 confidence in source detection
59
+ - `rationale`: Brief explanation of why this source type
60
+
61
+ ## ID Generation Rules
62
+
63
+ ### Source-Based Naming
64
+ - **Podcast**: `podcast-{date}-{topic}`
65
+ - **Transcript**: `transcript-{date}-{topic}`
66
+ - **Article**: `article-{date}-{topic}`
67
+ - **YouTube**: `youtube-{date}-{topic}`
68
+ - **Twitter**: `tweet-{date}-{topic}`
69
+ - **Text**: `text-{date}-{topic}`
70
+ - **Other**: `content-{date}-{topic}`
71
+
72
+ ### Topic Selection
73
+ - Extract from headline (first 2-3 words)
74
+ - If headline too generic, use category or first keyTheme
75
+ - Avoid articles (a, the, and, or)
76
+ - Use only letters, numbers, hyphens
77
+ - Maximum 3 words
78
+
79
+ ### Date Handling
80
+ - Use current date in YYYY-MM-DD format
81
+ - Or extract from context field if content has original date
82
+ - Format consistently
83
+
84
+ ### Examples
85
+ ```
86
+ Input: Podcast about AI in Healthcare (2024-12-08)
87
+ Output: podcast-2024-12-08-ai-healthcare
88
+
89
+ Input: Whisper transcript of React conference talk (2024-12-07)
90
+ Output: transcript-2024-12-07-react-conference
91
+
92
+ Input: Article on productivity hacks (2024-12-06)
93
+ Output: article-2024-12-06-productivity-hacks
94
+
95
+ Input: YouTube tutorial on Python (2024-12-05)
96
+ Output: youtube-2024-12-05-python-tutorial
97
+ ```
98
+
99
+ ## Output Format
100
+
101
+ Return structured JSON:
102
+ ```json
103
+ {
104
+ "contentId": "podcast-2024-12-08-ai-healthcare",
105
+ "detectedSource": "podcast",
106
+ "sourceConfidence": 0.95,
107
+ "rationale": "Audio transcript with speaker markers, timestamps, and conversational flow indicates podcast source."
108
+ }
109
+ ```
110
+
111
+ ## Important Rules
112
+
113
+ - Always return valid JSON
114
+ - Confidence score reflects certainty in source detection (0.5-1.0 typical range)
115
+ - Rationale should be brief (1-2 sentences)
116
+ - ID must be unique and reusable
117
+ - Never include spaces or special characters (except hyphens)
118
+ - Generate ID even if source confidence is moderate (>0.5)
119
+ - Prefer readable IDs over random strings
120
+ - Keep ID length under 60 characters when possible
@@ -0,0 +1,162 @@
1
+ ---
2
+ name: idea-synthesis
3
+ description: |
4
+ Looplia writer skill for generating content ideas with personalization.
5
+ Reads user profile for context. Generates hooks, angles, and thought-provoking questions.
6
+ Use after media-reviewer to transform analysis into creative content ideas.
7
+ tools: Read, Skill
8
+ ---
9
+
10
+ # Idea Synthesis Skill
11
+
12
+ Generate creative content ideas from analyzed content, personalized for the user.
13
+
14
+ ## Purpose
15
+
16
+ Transform content analysis into actionable writing ideas:
17
+ - Attention-grabbing hooks
18
+ - Unique angles/perspectives
19
+ - Thought-provoking questions
20
+
21
+ ## Process
22
+
23
+ ### Step 1: Read User Profile
24
+
25
+ Use the user-profile-reader skill to get user context:
26
+ - Topics of interest and expertise levels
27
+ - Preferred writing style
28
+ - Target audience
29
+
30
+ ```
31
+ Skill("user-profile-reader")
32
+ ```
33
+
34
+ ### Step 2: Read Content Analysis
35
+
36
+ Read the input file containing content analysis from media-reviewer:
37
+ - Key themes
38
+ - Important quotes
39
+ - Narrative structure
40
+ - Core ideas
41
+
42
+ ### Step 3: Generate Hooks
43
+
44
+ Create 3-5 attention-grabbing openers:
45
+
46
+ | Hook Type | Description | Example |
47
+ |-----------|-------------|---------|
48
+ | Question | Opens with a compelling question | "What if everything you knew about X was wrong?" |
49
+ | Statistic | Leads with surprising data | "90% of writers miss this critical step..." |
50
+ | Story | Starts with a brief narrative | "When I first discovered X, I was skeptical..." |
51
+ | Contrast | Highlights a surprising contradiction | "Most experts say X, but the data shows Y..." |
52
+ | Bold Statement | Makes a provocative claim | "X is dead. Here's what's replacing it..." |
53
+
54
+ ### Step 4: Generate Angles
55
+
56
+ Create 3-5 unique perspectives on the content:
57
+
58
+ For each angle:
59
+ - **Perspective**: What viewpoint does this take?
60
+ - **Approach**: How would you develop this angle?
61
+ - **Target**: Who would this appeal to?
62
+
63
+ ### Step 5: Generate Questions
64
+
65
+ Create 5-7 discussion starters:
66
+
67
+ | Depth | Description |
68
+ |-------|-------------|
69
+ | Surface | Basic comprehension questions |
70
+ | Medium | Application and analysis questions |
71
+ | Deep | Synthesis and evaluation questions |
72
+
73
+ ### Step 6: Personalize
74
+
75
+ Apply user profile:
76
+ - Emphasize topics matching user interests
77
+ - Adjust complexity to user's expertise level
78
+ - Align with user's writing style
79
+
80
+ ### Step 7: Write Output
81
+
82
+ Output JSON with all generated ideas.
83
+
84
+ ## Input
85
+
86
+ Content analysis JSON from media-reviewer containing:
87
+ - `contentId`
88
+ - `keyThemes`
89
+ - `importantQuotes`
90
+ - `coreIdeas`
91
+
92
+ ## Output Schema
93
+
94
+ ```json
95
+ {
96
+ "contentId": "string",
97
+ "hooks": [
98
+ {
99
+ "text": "What if the key to X isn't Y, but Z?",
100
+ "type": "question"
101
+ },
102
+ {
103
+ "text": "According to new research, 80% of...",
104
+ "type": "statistic"
105
+ }
106
+ ],
107
+ "angles": [
108
+ {
109
+ "perspective": "Skeptic's view",
110
+ "approach": "Challenge the main premise with counterexamples",
111
+ "target": "Readers who question conventional wisdom"
112
+ },
113
+ {
114
+ "perspective": "Beginner's guide",
115
+ "approach": "Break down complex concepts for newcomers",
116
+ "target": "People new to this topic"
117
+ }
118
+ ],
119
+ "questions": [
120
+ {
121
+ "text": "What would happen if we applied this to everyday life?",
122
+ "depth": "medium"
123
+ },
124
+ {
125
+ "text": "How does this change our understanding of X?",
126
+ "depth": "deep"
127
+ }
128
+ ],
129
+ "personalization": {
130
+ "matchedTopics": ["ai", "productivity"],
131
+ "adjustedFor": "intermediate expertise"
132
+ }
133
+ }
134
+ ```
135
+
136
+ ## Quality Guidelines
137
+
138
+ ### Good Hooks
139
+ - Specific, not generic
140
+ - Create curiosity
141
+ - Promise value
142
+ - Match content tone
143
+
144
+ ### Good Angles
145
+ - Unique perspective
146
+ - Actionable approach
147
+ - Clear target audience
148
+ - Connected to content themes
149
+
150
+ ### Good Questions
151
+ - Open-ended (not yes/no)
152
+ - Thought-provoking
153
+ - Multiple valid answers
154
+ - Encourage discussion
155
+
156
+ ## Important Rules
157
+
158
+ 1. **Always read user profile first** - Personalization is key
159
+ 2. **Include all hook types** - Variety in approaches
160
+ 3. **Cover all depth levels** - Questions for different readers
161
+ 4. **Stay true to content** - Ideas must derive from source
162
+ 5. **Be specific** - Avoid generic, cookie-cutter ideas
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: media-reviewer
3
+ description: |
4
+ Deep content analysis for structure, themes, narrative flow,
5
+ key moments, and important quotes. Use before content-documenter.
6
+ tools: Read, Glob
7
+ ---
8
+
9
+ # Media Reviewer Skill
10
+
11
+ Expert at analyzing media content to understand structure, ideas, and narrative flow.
12
+
13
+ ## What This Skill Does
14
+
15
+ - Reads content materials (text, captions, transcripts)
16
+ - Understands ideas and concepts being presented
17
+ - Identifies narrative structure and progression
18
+ - Discovers key moments, turning points, and themes
19
+ - Recognizes content organization patterns
20
+
21
+ ## Analysis Process
22
+
23
+ Follow these 9 steps in order:
24
+
25
+ ### Step 1: Read Everything
26
+ - Read the complete content file
27
+ - Note the metadata (title, source, date, type)
28
+ - Don't skim - read thoroughly
29
+ - If content is truncated, note what's missing
30
+
31
+ ### Step 2: Understand Context
32
+ - What is this content about?
33
+ - Who created it and why?
34
+ - What's the intended audience?
35
+ - What's the publication context?
36
+ - When was it created?
37
+
38
+ ### Step 3: Identify Structure
39
+ - How is the content organized?
40
+ - What are the main sections/segments?
41
+ - How long is each part?
42
+ - What's the logical flow?
43
+ - Are there chapters, timestamps, or markers?
44
+
45
+ ### Step 4: Extract Core Ideas
46
+ - What are the 3-7 main concepts?
47
+ - How are they explained?
48
+ - What examples are given?
49
+ - How do ideas connect to each other?
50
+ - What's the central thesis?
51
+
52
+ ### Step 5: Track Narrative Flow
53
+ - How does content progress?
54
+ - What's the arc (intro → development → conclusion)?
55
+ - Where are the key transitions?
56
+ - How do ideas build on each other?
57
+ - What's the pacing?
58
+
59
+ ### Step 6: Find Key Moments
60
+ - What are the most important points?
61
+ - Where are the "aha" moments?
62
+ - What would someone quote from this?
63
+ - What's most memorable?
64
+ - What's surprising or novel?
65
+
66
+ ### Step 7: Extract Quotes + Timestamps
67
+ - Find 5-20 verbatim quotes
68
+ - For video/audio: note exact timestamps (HH:MM:SS or MM:SS)
69
+ - Capture the most insightful statements
70
+ - Include context for each quote
71
+ - Never paraphrase - exact words only
72
+
73
+ ### Step 8: Identify Themes
74
+ - What recurring topics emerge?
75
+ - What patterns appear throughout?
76
+ - What's the underlying message?
77
+ - What values or perspectives are expressed?
78
+
79
+ ### Step 9: Documentary Angle
80
+ - If making a documentary about this, how would you structure it?
81
+ - What's the narrative hook that draws people in?
82
+ - What makes this content unique?
83
+ - What's the emotional arc?
84
+
85
+ ## Output
86
+
87
+ Your analysis is IMPLICIT - it stays in your thinking.
88
+ The content-documenter skill will use your analysis to produce structured output.
89
+ Do NOT output JSON directly from this skill.
90
+
91
+ Focus on understanding deeply so content-documenter can produce rich output.
92
+
93
+ ## Important Rules
94
+
95
+ - Be thorough and comprehensive
96
+ - Understand the material deeply
97
+ - Preserve nuance and detail
98
+ - Note what makes this content unique
99
+ - Always include timestamps for video/audio
100
+ - Read the ENTIRE content before analyzing
101
+ - Don't add interpretation or opinion
102
+ - Don't skip important details
103
+ - Don't oversimplify complex concepts
104
+ - Don't paraphrase quotes - keep verbatim
105
+ - Don't rush - thoroughness over speed
@@ -0,0 +1,94 @@
1
+ ---
2
+ name: user-profile-reader
3
+ description: |
4
+ Read user profile from workspace and calculate content relevance.
5
+ Use to personalize output based on user interests.
6
+ tools: Read
7
+ ---
8
+
9
+ # User Profile Reader Skill
10
+
11
+ Read and interpret user preferences for content personalization.
12
+
13
+ ## What This Skill Does
14
+
15
+ - Reads `user-profile.json` from workspace root
16
+ - Provides user context to other processing
17
+ - Calculates relevance scores for content
18
+
19
+ ## User Profile Location
20
+
21
+ `~/.looplia/user-profile.json`
22
+
23
+ ## User Profile Schema
24
+
25
+ ```json
26
+ {
27
+ "userId": "string",
28
+ "topics": [
29
+ { "topic": "string", "interestLevel": 1-5 }
30
+ ],
31
+ "style": {
32
+ "tone": "beginner" | "intermediate" | "expert" | "mixed",
33
+ "targetWordCount": 100-10000,
34
+ "voice": "first-person" | "third-person" | "instructional"
35
+ }
36
+ }
37
+ ```
38
+
39
+ ## Relevance Scoring Algorithm
40
+
41
+ Calculate `score.relevanceToUser` (0-1):
42
+
43
+ ```
44
+ 1. For each user topic:
45
+ - weight = interestLevel / 5
46
+ - matched = content tags/themes contain topic (case-insensitive)
47
+
48
+ 2. Calculate score:
49
+ - matchedWeight = sum of weights for matched topics
50
+ - totalWeight = sum of all topic weights
51
+ - score = matchedWeight / totalWeight
52
+
53
+ 3. If no user topics defined:
54
+ - score = 0.5 (neutral)
55
+ ```
56
+
57
+ ## Example Calculation
58
+
59
+ User profile:
60
+ ```json
61
+ {
62
+ "topics": [
63
+ { "topic": "AI", "interestLevel": 5 },
64
+ { "topic": "productivity", "interestLevel": 3 },
65
+ { "topic": "cooking", "interestLevel": 2 }
66
+ ]
67
+ }
68
+ ```
69
+
70
+ Content tags: ["AI", "safety", "alignment"]
71
+
72
+ Calculation:
73
+ - AI: matched, weight = 5/5 = 1.0 (contributes to matchedWeight)
74
+ - productivity: not matched, weight = 3/5 = 0.6 (contributes to totalWeight only)
75
+ - cooking: not matched, weight = 2/5 = 0.4 (contributes to totalWeight only)
76
+ - matchedWeight = 1.0
77
+ - totalWeight = 1.0 + 0.6 + 0.4 = 2.0
78
+ - score = 1.0 / 2.0 = 0.5
79
+
80
+ ## Usage in Other Skills
81
+
82
+ When content-documenter needs relevance score:
83
+ 1. Read user-profile.json
84
+ 2. Compare content tags/themes to user topics
85
+ 3. Apply algorithm above
86
+ 4. Return score in `score.relevanceToUser` field
87
+
88
+ ## Handling Edge Cases
89
+
90
+ - **No user profile file:** Use score = 0.5
91
+ - **Empty topics array:** Use score = 0.5
92
+ - **Invalid JSON:** Use score = 0.5, log warning
93
+ - **All topics matched:** score = 1.0
94
+ - **No topics matched:** score = 0.0
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: writing-enhancer
3
+ description: Rephrase or completely rewrite content matching user's preferred tone, voice, and style.
4
+ ---
5
+
6
+ # Writing Enhancer Skill
7
+
8
+ Transform writing to match user's style preferences.
9
+
10
+ ## What This Skill Does
11
+
12
+ - Reads WritingKit + UserProfile
13
+ - Rephrases content in user's preferred tone/voice
14
+ - Generates complete article draft (future feature)
15
+
16
+ ## Input
17
+
18
+ - WritingKit JSON
19
+ - UserProfile JSON
20
+
21
+ ## Output
22
+
23
+ Enhanced content matching:
24
+ - tone: beginner, intermediate, expert, mixed
25
+ - voice: first-person, third-person, instructional
26
+ - targetWordCount: Desired article length
27
+
28
+ ## Important Rules
29
+
30
+ ✅ Preserve original meaning and facts
31
+ ✅ Match user's preferred style
32
+ ✅ Maintain accuracy of quotes and data
33
+ ❌ Don't add information not in source
34
+ ❌ Don't change factual claims