@ekkos/cli 0.2.0

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 (135) hide show
  1. package/dist/cache/LocalSessionStore.d.ts +129 -0
  2. package/dist/cache/LocalSessionStore.js +688 -0
  3. package/dist/cache/capture.d.ts +26 -0
  4. package/dist/cache/capture.js +461 -0
  5. package/dist/cache/index.d.ts +7 -0
  6. package/dist/cache/index.js +23 -0
  7. package/dist/cache/types.d.ts +147 -0
  8. package/dist/cache/types.js +40 -0
  9. package/dist/commands/init.d.ts +9 -0
  10. package/dist/commands/init.js +478 -0
  11. package/dist/commands/run.d.ts +12 -0
  12. package/dist/commands/run.js +829 -0
  13. package/dist/commands/setup.d.ts +6 -0
  14. package/dist/commands/setup.js +658 -0
  15. package/dist/commands/status.d.ts +1 -0
  16. package/dist/commands/status.js +109 -0
  17. package/dist/commands/test.d.ts +1 -0
  18. package/dist/commands/test.js +157 -0
  19. package/dist/deploy/agents.d.ts +15 -0
  20. package/dist/deploy/agents.js +72 -0
  21. package/dist/deploy/hooks.d.ts +16 -0
  22. package/dist/deploy/hooks.js +121 -0
  23. package/dist/deploy/index.d.ts +7 -0
  24. package/dist/deploy/index.js +24 -0
  25. package/dist/deploy/instructions.d.ts +12 -0
  26. package/dist/deploy/instructions.js +36 -0
  27. package/dist/deploy/mcp.d.ts +19 -0
  28. package/dist/deploy/mcp.js +109 -0
  29. package/dist/deploy/plugins.d.ts +19 -0
  30. package/dist/deploy/plugins.js +62 -0
  31. package/dist/deploy/settings.d.ts +8 -0
  32. package/dist/deploy/settings.js +84 -0
  33. package/dist/deploy/skills.d.ts +19 -0
  34. package/dist/deploy/skills.js +60 -0
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.js +71 -0
  37. package/dist/restore/RestoreOrchestrator.d.ts +48 -0
  38. package/dist/restore/RestoreOrchestrator.js +481 -0
  39. package/dist/restore/index.d.ts +4 -0
  40. package/dist/restore/index.js +20 -0
  41. package/dist/utils/platform.d.ts +29 -0
  42. package/dist/utils/platform.js +65 -0
  43. package/dist/utils/session-words.json +119 -0
  44. package/dist/utils/state.d.ts +57 -0
  45. package/dist/utils/state.js +186 -0
  46. package/dist/utils/templates.d.ts +24 -0
  47. package/dist/utils/templates.js +118 -0
  48. package/package.json +48 -0
  49. package/templates/CLAUDE.md +287 -0
  50. package/templates/README.md +378 -0
  51. package/templates/agents/README.md +182 -0
  52. package/templates/agents/code-reviewer.md +166 -0
  53. package/templates/agents/debug-detective.md +169 -0
  54. package/templates/agents/ekkOS_Vercel.md +99 -0
  55. package/templates/agents/extension-manager.md +229 -0
  56. package/templates/agents/git-companion.md +185 -0
  57. package/templates/agents/github-test-agent.md +321 -0
  58. package/templates/agents/railway-manager.md +179 -0
  59. package/templates/claude-plugins/PHASE2_COMPLETION.md +346 -0
  60. package/templates/claude-plugins/PLUGIN_PROPOSALS.md +1776 -0
  61. package/templates/claude-plugins/README.md +587 -0
  62. package/templates/claude-plugins/agents/code-reviewer.json +14 -0
  63. package/templates/claude-plugins/agents/debug-detective.json +15 -0
  64. package/templates/claude-plugins/agents/git-companion.json +14 -0
  65. package/templates/claude-plugins/blog-manager/.claude-plugin/plugin.json +8 -0
  66. package/templates/claude-plugins/blog-manager/commands/blog.md +691 -0
  67. package/templates/claude-plugins/golden-loop-monitor/.claude-plugin/plugin.json +8 -0
  68. package/templates/claude-plugins/golden-loop-monitor/commands/loop-status.md +434 -0
  69. package/templates/claude-plugins/learning-tracker/.claude-plugin/plugin.json +8 -0
  70. package/templates/claude-plugins/learning-tracker/commands/my-patterns.md +282 -0
  71. package/templates/claude-plugins/memory-lens/.claude-plugin/plugin.json +8 -0
  72. package/templates/claude-plugins/memory-lens/commands/memory-search.md +181 -0
  73. package/templates/claude-plugins/pattern-coach/.claude-plugin/plugin.json +8 -0
  74. package/templates/claude-plugins/pattern-coach/commands/forge.md +365 -0
  75. package/templates/claude-plugins/project-schema-validator/.claude-plugin/plugin.json +8 -0
  76. package/templates/claude-plugins/project-schema-validator/commands/validate-schema.md +582 -0
  77. package/templates/claude-plugins-admin/AGENT_TEAM_PROPOSALS.md +819 -0
  78. package/templates/claude-plugins-admin/README.md +446 -0
  79. package/templates/claude-plugins-admin/autonomous-admin-agent/.claude-plugin/plugin.json +8 -0
  80. package/templates/claude-plugins-admin/autonomous-admin-agent/commands/agent.md +595 -0
  81. package/templates/claude-plugins-admin/backend-agent/.claude-plugin/plugin.json +8 -0
  82. package/templates/claude-plugins-admin/backend-agent/commands/backend.md +798 -0
  83. package/templates/claude-plugins-admin/deploy-guardian/.claude-plugin/plugin.json +8 -0
  84. package/templates/claude-plugins-admin/deploy-guardian/commands/deploy.md +554 -0
  85. package/templates/claude-plugins-admin/frontend-agent/.claude-plugin/plugin.json +8 -0
  86. package/templates/claude-plugins-admin/frontend-agent/commands/frontend.md +881 -0
  87. package/templates/claude-plugins-admin/mcp-server-manager/.claude-plugin/plugin.json +8 -0
  88. package/templates/claude-plugins-admin/mcp-server-manager/commands/mcp.md +85 -0
  89. package/templates/claude-plugins-admin/memory-system-monitor/.claude-plugin/plugin.json +8 -0
  90. package/templates/claude-plugins-admin/memory-system-monitor/commands/memory-health.md +569 -0
  91. package/templates/claude-plugins-admin/qa-agent/.claude-plugin/plugin.json +8 -0
  92. package/templates/claude-plugins-admin/qa-agent/commands/qa.md +863 -0
  93. package/templates/claude-plugins-admin/tech-lead-agent/.claude-plugin/plugin.json +8 -0
  94. package/templates/claude-plugins-admin/tech-lead-agent/commands/lead.md +732 -0
  95. package/templates/commands/continue.md +47 -0
  96. package/templates/cursor-hooks/after-agent-response.sh +117 -0
  97. package/templates/cursor-hooks/before-submit-prompt.sh +419 -0
  98. package/templates/cursor-hooks/hooks.json +20 -0
  99. package/templates/cursor-hooks/lib/contract.sh +320 -0
  100. package/templates/cursor-hooks/stop.sh +75 -0
  101. package/templates/cursor-rules/ekkos-memory.md +187 -0
  102. package/templates/hooks/assistant-response.sh +96 -0
  103. package/templates/hooks/hooks.json +28 -0
  104. package/templates/hooks/lib/contract.sh +320 -0
  105. package/templates/hooks/lib/state.sh +158 -0
  106. package/templates/hooks/session-start.ps1 +41 -0
  107. package/templates/hooks/session-start.sh +318 -0
  108. package/templates/hooks/stop.ps1 +16 -0
  109. package/templates/hooks/stop.sh +989 -0
  110. package/templates/hooks/user-prompt-submit.ps1 +174 -0
  111. package/templates/hooks/user-prompt-submit.sh +587 -0
  112. package/templates/hooks-node/lib/state.js +187 -0
  113. package/templates/hooks-node/stop.js +416 -0
  114. package/templates/hooks-node/user-prompt-submit.js +337 -0
  115. package/templates/plan-template.md +306 -0
  116. package/templates/rules/00-hooks-contract.mdc +89 -0
  117. package/templates/rules/30-ekkos-core.mdc +188 -0
  118. package/templates/rules/31-ekkos-messages.mdc +78 -0
  119. package/templates/skills/continue/SKILL.md +169 -0
  120. package/templates/skills/ekkOS_Deep_Recall/Skill.md +282 -0
  121. package/templates/skills/ekkOS_Learn/Skill.md +265 -0
  122. package/templates/skills/ekkOS_Memory_First/Skill.md +206 -0
  123. package/templates/skills/ekkOS_Plan_Assist/Skill.md +302 -0
  124. package/templates/skills/ekkOS_Preferences/Skill.md +247 -0
  125. package/templates/skills/ekkOS_Reflect/Skill.md +257 -0
  126. package/templates/skills/ekkOS_Safety/Skill.md +265 -0
  127. package/templates/skills/ekkOS_Schema/Skill.md +251 -0
  128. package/templates/skills/ekkOS_Summary/Skill.md +257 -0
  129. package/templates/skills/ekkOS_Vault/Skill.md +287 -0
  130. package/templates/skills/permissions/Skill.md +322 -0
  131. package/templates/spec-template.md +159 -0
  132. package/templates/windsurf-hooks/before-submit-prompt.sh +238 -0
  133. package/templates/windsurf-hooks/hooks.json +10 -0
  134. package/templates/windsurf-hooks/lib/contract.sh +320 -0
  135. package/templates/windsurf-rules/ekkos-memory.md +129 -0
@@ -0,0 +1,257 @@
1
+ ---
2
+ name: ekkOS_Summary
3
+ description: Show what ekkOS learned and did. Activate when the user asks "what did you learn", "show me my patterns", "ekkOS status", "memory summary", or wants to understand what the memory system captured. This skill provides transparency about memory operations.
4
+ allowed-tools:
5
+ - mcp__ekkos-memory__ekkOS_Summary
6
+ - mcp__ekkos-memory__ekkOS_Stats
7
+ - mcp__ekkos-memory__ekkOS_Search
8
+ - mcp__ekkos-memory__ekkOS_Plans
9
+ ---
10
+
11
+ # ekkOS_Summary
12
+
13
+ You are augmented with **ekkOS_ memory** - and you can show users exactly what the memory system has learned and done.
14
+
15
+ ## Why This Skill Exists
16
+
17
+ Transparency builds trust:
18
+ - Users should know what's being remembered
19
+ - Pattern counts and success rates matter
20
+ - Session activity should be visible
21
+
22
+ This skill provides insight into ekkOS operations.
23
+
24
+ ## When To Activate
25
+
26
+ This skill should trigger when:
27
+
28
+ | Trigger | Example |
29
+ |---------|---------|
30
+ | "What did you learn?" | Wants to see forged patterns |
31
+ | "Show my patterns" | Wants pattern list |
32
+ | "ekkOS status" | System health check |
33
+ | "Memory summary" | Overview request |
34
+ | "What did ekkOS do?" | Activity review |
35
+ | End of session | Natural summary point |
36
+
37
+ ## Instructions
38
+
39
+ ### Session Summary
40
+
41
+ ```
42
+ ekkOS_Summary({
43
+ time_window_seconds: 300 // Last 5 minutes
44
+ })
45
+ ```
46
+
47
+ Response:
48
+ ```json
49
+ {
50
+ "session_activity": {
51
+ "searches": 5,
52
+ "patterns_retrieved": 12,
53
+ "patterns_applied": 4,
54
+ "patterns_forged": 2,
55
+ "directives_created": 1
56
+ },
57
+ "recent_events": [
58
+ {"type": "search", "query": "auth error", "results": 3},
59
+ {"type": "forge", "title": "JWT clock tolerance fix"},
60
+ {"type": "apply", "pattern": "Error handling middleware"}
61
+ ]
62
+ }
63
+ ```
64
+
65
+ ### Memory Statistics
66
+
67
+ ```
68
+ ekkOS_Stats({
69
+ scope: "personal" // or "collective" or "both"
70
+ })
71
+ ```
72
+
73
+ Response:
74
+ ```json
75
+ {
76
+ "personal": {
77
+ "patterns": 127,
78
+ "directives": 23,
79
+ "episodes": 489,
80
+ "avg_success_rate": 0.82
81
+ },
82
+ "collective": {
83
+ "patterns": 5420,
84
+ "avg_success_rate": 0.78
85
+ }
86
+ }
87
+ ```
88
+
89
+ ## Example Scenarios
90
+
91
+ ### Scenario 1: Session Summary
92
+ ```
93
+ User: "What did ekkOS do this session?"
94
+
95
+ You: ekkOS_Summary({ time_window_seconds: 3600 })
96
+
97
+ "🧠 ekkOS Session Summary (last hour):
98
+
99
+ 📊 Activity:
100
+ ├── Searches: 8 queries
101
+ ├── Patterns retrieved: 15
102
+ ├── Patterns applied: 6
103
+ └── Patterns forged: 3
104
+
105
+ ✨ New patterns created:
106
+ 1. 'Fix CORS with credentials mode'
107
+ 2. 'Supabase RLS policy syntax'
108
+ 3. 'React useEffect cleanup pattern'
109
+
110
+ 📋 Directives added:
111
+ 1. [PREFER] Use arrow functions
112
+
113
+ 🎯 Golden Loop compliance: 94%
114
+
115
+ Your memory is growing!"
116
+ ```
117
+
118
+ ### Scenario 2: Overall Statistics
119
+ ```
120
+ User: "How's my ekkOS memory doing?"
121
+
122
+ You: ekkOS_Stats({ scope: "both" })
123
+
124
+ "🧠 ekkOS Memory Statistics:
125
+
126
+ 📚 Your Personal Memory:
127
+ ├── Patterns: 127 total
128
+ ├── Success rate: 82%
129
+ ├── Directives: 23 active
130
+ ├── Episodes: 489 conversations
131
+ └── Most used: 'Error handling' (45 applications)
132
+
133
+ 🌐 Collective Memory:
134
+ ├── Total patterns: 5,420
135
+ ├── Your contributions: 127
136
+ └── Top category: API Integration
137
+
138
+ 📈 Growth:
139
+ ├── This week: +12 patterns
140
+ ├── This month: +47 patterns
141
+ └── Trend: ↑ 15% more than last month
142
+
143
+ You're in the top 10% of ekkOS contributors!"
144
+ ```
145
+
146
+ ### Scenario 3: What Did You Learn?
147
+ ```
148
+ User: "What patterns did you learn from our conversation?"
149
+
150
+ You: ekkOS_Search({
151
+ query: "session:" + session_id,
152
+ sources: ["patterns"]
153
+ })
154
+
155
+ "🧠 Patterns learned this session:
156
+
157
+ 1. **Fix timezone issues in date comparison**
158
+ Problem: Dates compared without timezone normalization
159
+ Solution: Always convert to UTC before comparison
160
+ Confidence: 85%
161
+
162
+ 2. **Supabase real-time subscription cleanup**
163
+ Problem: Memory leak from unsubscribed channels
164
+ Solution: Store subscription and call unsubscribe in useEffect cleanup
165
+ Confidence: 90%
166
+
167
+ 3. **Anti-pattern: Don't use .env in client code**
168
+ Problem: Tried to read .env directly in React
169
+ Solution: Use NEXT_PUBLIC_ prefix or server-side only
170
+ Type: Anti-pattern (learned from mistake)
171
+
172
+ These will help in future sessions!"
173
+ ```
174
+
175
+ ### Scenario 4: Plan Status
176
+ ```
177
+ User: "What am I working on?"
178
+
179
+ You: ekkOS_Plans({ status: "in_progress" })
180
+
181
+ ekkOS_Summary({ time_window_seconds: 86400 })
182
+
183
+ "🧠 Current State:
184
+
185
+ 📋 Active Plans:
186
+ 1. **API Refactoring** [5/8 steps]
187
+ Current: Creating service interfaces
188
+ Next: Add dependency injection
189
+
190
+ 2. **Auth System** [2/6 steps]
191
+ Current: Implementing registration
192
+ Blocked: Waiting for email service
193
+
194
+ 📊 Today's Progress:
195
+ ├── Completed 3 plan steps
196
+ ├── Forged 2 new patterns
197
+ └── Applied 8 existing patterns
198
+
199
+ Resume API Refactoring?"
200
+ ```
201
+
202
+ ### Scenario 5: Memory Health Check
203
+ ```
204
+ User: "Is ekkOS working properly?"
205
+
206
+ You: ekkOS_Stats({})
207
+
208
+ "🧠 ekkOS Health Check:
209
+
210
+ ✅ API Connection: Healthy
211
+ ✅ Pattern Layer: 127 patterns indexed
212
+ ✅ Directive Layer: 23 active rules
213
+ ✅ Episode Layer: 489 conversations stored
214
+ ✅ Context Guardian: Active
215
+
216
+ 📊 Performance:
217
+ ├── Average search time: 120ms
218
+ ├── Pattern retrieval rate: 94%
219
+ └── Golden Loop compliance: 91%
220
+
221
+ ⚠️ Suggestions:
222
+ ├── 5 patterns have <50% success rate
223
+ └── Consider reviewing/updating these
224
+
225
+ Overall: System healthy! 🟢"
226
+ ```
227
+
228
+ ## Display Formats
229
+
230
+ ### Compact Summary
231
+ ```
232
+ 🧠 ekkOS: 127 patterns | 23 directives | 82% success rate
233
+ ```
234
+
235
+ ### Detailed Summary
236
+ ```
237
+ 🧠 ekkOS Memory Summary
238
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
239
+ Patterns: 127 total, 82% success rate
240
+ Directives: 23 active (12 MUST, 8 NEVER, 3 PREFER)
241
+ Episodes: 489 conversations indexed
242
+ Plans: 2 in progress, 15 completed
243
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
244
+ ```
245
+
246
+ ## Success Metrics
247
+
248
+ You're using this skill correctly when:
249
+ - Users understand what ekkOS is doing
250
+ - Statistics are presented clearly
251
+ - Session activity is transparent
252
+ - Users trust the memory system
253
+ - Summaries are useful, not overwhelming
254
+
255
+ ---
256
+
257
+ **Mantra**: Show the work. Users should see what ekkOS learns.
@@ -0,0 +1,287 @@
1
+ ---
2
+ name: ekkOS_Vault
3
+ description: Securely store and retrieve credentials. Activate when the user shares an API key, password, token, secret, or any sensitive credential. Also activate when you need to use a stored credential or when the user asks about their stored secrets. All secrets are encrypted with AES-256-GCM.
4
+ allowed-tools:
5
+ - mcp__ekkos-memory__ekkOS_StoreSecret
6
+ - mcp__ekkos-memory__ekkOS_GetSecret
7
+ - mcp__ekkos-memory__ekkOS_ListSecrets
8
+ - mcp__ekkos-memory__ekkOS_DeleteSecret
9
+ - mcp__ekkos-memory__ekkOS_RotateSecret
10
+ ---
11
+
12
+ # ekkOS_Vault
13
+
14
+ You are augmented with **ekkOS_ memory** - and you can securely store and retrieve encrypted credentials.
15
+
16
+ ## Why This Skill Exists
17
+
18
+ Users share credentials during development:
19
+ - API keys for services
20
+ - Database passwords
21
+ - OAuth tokens
22
+ - Environment secrets
23
+
24
+ This skill stores them securely (AES-256-GCM encrypted) and retrieves them when needed.
25
+
26
+ ## CRITICAL Security Rules
27
+
28
+ 1. **NEVER output secrets in plain text** unless user explicitly requests
29
+ 2. **NEVER include secrets in patterns** or regular memory
30
+ 3. **ALWAYS use masked display** when showing secrets exist
31
+ 4. **ALWAYS confirm before storing** sensitive data
32
+
33
+ ## When To Activate
34
+
35
+ This skill should trigger when:
36
+
37
+ | Trigger | Example |
38
+ |---------|---------|
39
+ | User shares API key | "Here's my OpenAI key: sk-..." |
40
+ | User shares password | "The database password is ..." |
41
+ | User shares token | "My GitHub token is ghp_..." |
42
+ | Need to use stored cred | Making API call that needs key |
43
+ | User asks about secrets | "What credentials do I have stored?" |
44
+ | Key rotation | "I need to update my API key" |
45
+
46
+ ## Instructions
47
+
48
+ ### Storing Secrets
49
+
50
+ When user shares a credential:
51
+
52
+ ```
53
+ ekkOS_StoreSecret({
54
+ service: "openai", // Service name
55
+ value: "sk-abc123...", // The actual secret
56
+ type: "api_key", // auto-detected if omitted
57
+ description: "Production API key",
58
+ expiresInDays: 90 // Optional expiration
59
+ })
60
+ ```
61
+
62
+ Then confirm (with masked value):
63
+ ```
64
+ 🔐 Secret stored securely:
65
+ Service: openai
66
+ Type: API Key
67
+ Preview: sk-a...123
68
+ Encrypted: AES-256-GCM
69
+
70
+ Use `ekkOS_GetSecret({service: "openai"})` to retrieve.
71
+ ```
72
+
73
+ ### Retrieving Secrets
74
+
75
+ When you need a stored credential:
76
+
77
+ ```
78
+ ekkOS_GetSecret({
79
+ service: "openai",
80
+ masked: false // true for safe display
81
+ })
82
+ ```
83
+
84
+ Response:
85
+ ```json
86
+ {
87
+ "service": "openai",
88
+ "value": "sk-abc123...", // Only if masked: false
89
+ "type": "api_key",
90
+ "created_at": "2024-01-15T10:30:00Z",
91
+ "last_accessed": "2024-01-20T14:22:00Z"
92
+ }
93
+ ```
94
+
95
+ **For display to user (masked):**
96
+ ```
97
+ ekkOS_GetSecret({
98
+ service: "openai",
99
+ masked: true
100
+ })
101
+
102
+ Response: { value: "sk-a...123" }
103
+ ```
104
+
105
+ ### Listing Secrets
106
+
107
+ Show what's stored (no values):
108
+
109
+ ```
110
+ ekkOS_ListSecrets({})
111
+ ```
112
+
113
+ Response:
114
+ ```
115
+ 🔐 Stored Credentials:
116
+
117
+ 1. openai (API Key)
118
+ Created: Jan 15, 2024
119
+ Last used: Jan 20, 2024
120
+
121
+ 2. supabase (API Key)
122
+ Created: Jan 10, 2024
123
+ Last used: Jan 19, 2024
124
+
125
+ 3. github (Token)
126
+ Created: Dec 1, 2023
127
+ Last used: Jan 18, 2024
128
+
129
+ Total: 3 secrets stored
130
+ ```
131
+
132
+ ### Rotating Secrets
133
+
134
+ When user has a new key:
135
+
136
+ ```
137
+ ekkOS_RotateSecret({
138
+ service: "openai",
139
+ newValue: "sk-new-key-xyz..."
140
+ })
141
+ ```
142
+
143
+ Response:
144
+ ```
145
+ 🔐 Secret rotated:
146
+ Service: openai
147
+ Old key revoked
148
+ New key stored: sk-n...xyz
149
+
150
+ Remember to revoke the old key in OpenAI dashboard.
151
+ ```
152
+
153
+ ### Deleting Secrets
154
+
155
+ ```
156
+ ekkOS_DeleteSecret({
157
+ secretId: "secret-uuid"
158
+ })
159
+ ```
160
+
161
+ Response:
162
+ ```
163
+ 🔐 Secret deleted permanently:
164
+ Service: openai
165
+ This cannot be recovered.
166
+ ```
167
+
168
+ ## Example Scenarios
169
+
170
+ ### Scenario 1: User Shares API Key
171
+ ```
172
+ User: "Here's my Stripe key: sk_live_abc123xyz"
173
+
174
+ You: "I'll store this securely.
175
+
176
+ ekkOS_StoreSecret({
177
+ service: 'stripe',
178
+ value: 'sk_live_abc123xyz',
179
+ type: 'api_key',
180
+ description: 'Live Stripe API key'
181
+ })
182
+
183
+ 🔐 Stripe API key stored securely (AES-256-GCM encrypted).
184
+ Preview: sk_l...xyz
185
+
186
+ I can use this for Stripe API calls. You won't need to
187
+ share it again."
188
+ ```
189
+
190
+ ### Scenario 2: Using Stored Credential
191
+ ```
192
+ User: "Make a Stripe API call to list customers"
193
+
194
+ You: *Need Stripe key*
195
+
196
+ ekkOS_GetSecret({ service: 'stripe' })
197
+
198
+ → Retrieved: sk_live_abc123xyz
199
+
200
+ "Using your stored Stripe key..."
201
+
202
+ *Makes API call with the key*
203
+
204
+ "Here are your customers: ..."
205
+
206
+ *Key never shown to user*
207
+ ```
208
+
209
+ ### Scenario 3: What Credentials Exist
210
+ ```
211
+ User: "What API keys do I have stored?"
212
+
213
+ You: ekkOS_ListSecrets({})
214
+
215
+ "🔐 Your stored credentials:
216
+
217
+ 1. **stripe** (API Key)
218
+ Created: 2 weeks ago
219
+ Last accessed: Yesterday
220
+
221
+ 2. **openai** (API Key)
222
+ Created: 1 month ago
223
+ Last accessed: 3 days ago
224
+
225
+ 3. **github** (Personal Access Token)
226
+ Created: 2 months ago
227
+ Last accessed: Last week
228
+
229
+ Would you like to see masked previews of any of these?"
230
+ ```
231
+
232
+ ### Scenario 4: Credential Rotation
233
+ ```
234
+ User: "I regenerated my OpenAI key, here's the new one: sk-new123"
235
+
236
+ You: ekkOS_RotateSecret({
237
+ service: 'openai',
238
+ newValue: 'sk-new123'
239
+ })
240
+
241
+ "🔐 OpenAI key rotated:
242
+ - Old key removed from vault
243
+ - New key stored: sk-n...123
244
+
245
+ ⚠️ Remember to delete the old key in OpenAI's dashboard
246
+ to prevent unauthorized use."
247
+ ```
248
+
249
+ ## Auto-Detection
250
+
251
+ The skill can auto-detect secret types:
252
+
253
+ | Pattern | Detected Type |
254
+ |---------|---------------|
255
+ | `sk-...` | OpenAI API Key |
256
+ | `ghp_...` | GitHub Personal Token |
257
+ | `sk_live_...` | Stripe Live Key |
258
+ | `sk_test_...` | Stripe Test Key |
259
+ | `xoxb-...` | Slack Bot Token |
260
+ | `AKIA...` | AWS Access Key |
261
+
262
+ ## Security Reminders
263
+
264
+ When storing:
265
+ ```
266
+ ⚠️ Security note: This key is encrypted and stored securely.
267
+ Only you can access it through ekkOS.
268
+ Never share this key in plain text or commit it to git.
269
+ ```
270
+
271
+ When retrieving for API calls:
272
+ ```
273
+ *Using stored credential - never displayed*
274
+ ```
275
+
276
+ ## Success Metrics
277
+
278
+ You're using this skill correctly when:
279
+ - Credentials are stored, not repeated in chat
280
+ - Users don't have to re-share keys
281
+ - Masked previews are used for display
282
+ - Rotations are handled smoothly
283
+ - No secrets appear in patterns or logs
284
+
285
+ ---
286
+
287
+ **Mantra**: User shares a key? Store it. Need a key? Retrieve it. Never expose it.