paput-mcp 2.8.5 → 2.9.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 (80) hide show
  1. package/README.md +1 -0
  2. package/dist/cli/rules/paput-knowledge-capture.md +13 -0
  3. package/dist/cli/setup-ai.js +24 -195
  4. package/dist/cli/setup-ai.js.map +1 -1
  5. package/dist/cli/skills/paput-capture/SKILL.md +55 -0
  6. package/dist/cli/skills/paput-dashboard-analysis/SKILL.md +44 -0
  7. package/dist/cli/skills/paput-init/SKILL.md +41 -0
  8. package/dist/cli/skills/paput-project-summary/SKILL.md +39 -0
  9. package/dist/cli/skills/paput-public-profile-summary/SKILL.md +41 -0
  10. package/dist/cli/skills/paput-save/SKILL.md +23 -0
  11. package/dist/cli/skills/paput-sync/SKILL.md +21 -0
  12. package/dist/handlers/get-public-profile-context/handler.js +81 -0
  13. package/dist/handlers/get-public-profile-context/handler.js.map +1 -0
  14. package/dist/handlers/get-public-profile-context/index.js.map +1 -0
  15. package/dist/handlers/get-public-profile-context/tool.js +13 -0
  16. package/dist/handlers/get-public-profile-context/tool.js.map +1 -0
  17. package/dist/handlers/get-skill-sheet/handler.js +23 -0
  18. package/dist/handlers/get-skill-sheet/handler.js.map +1 -1
  19. package/dist/handlers/index.js +2 -0
  20. package/dist/handlers/index.js.map +1 -1
  21. package/dist/handlers/update-skill-sheet-public-profile/handler.js +56 -0
  22. package/dist/handlers/update-skill-sheet-public-profile/handler.js.map +1 -0
  23. package/dist/handlers/update-skill-sheet-public-profile/index.js +2 -0
  24. package/dist/handlers/update-skill-sheet-public-profile/index.js.map +1 -0
  25. package/dist/handlers/update-skill-sheet-public-profile/tool.js +50 -0
  26. package/dist/handlers/update-skill-sheet-public-profile/tool.js.map +1 -0
  27. package/dist/http.js +47 -0
  28. package/dist/http.js.map +1 -1
  29. package/dist/index.js +0 -0
  30. package/dist/schemas/tool-input.js +26 -0
  31. package/dist/schemas/tool-input.js.map +1 -1
  32. package/dist/services/api/skill-sheet.js +8 -0
  33. package/dist/services/api/skill-sheet.js.map +1 -1
  34. package/dist/tool.js +3 -1
  35. package/dist/tool.js.map +1 -1
  36. package/docs/tools.md +16 -0
  37. package/docs/usage-examples.md +18 -0
  38. package/package.json +2 -2
  39. package/dist/handlers/create-idea/handler.js +0 -65
  40. package/dist/handlers/create-idea/handler.js.map +0 -1
  41. package/dist/handlers/create-idea/index.js +0 -3
  42. package/dist/handlers/create-idea/index.js.map +0 -1
  43. package/dist/handlers/create-idea/tool.js +0 -23
  44. package/dist/handlers/create-idea/tool.js.map +0 -1
  45. package/dist/handlers/delete-idea/handler.js +0 -64
  46. package/dist/handlers/delete-idea/handler.js.map +0 -1
  47. package/dist/handlers/delete-idea/index.js +0 -3
  48. package/dist/handlers/delete-idea/index.js.map +0 -1
  49. package/dist/handlers/delete-idea/tool.js +0 -19
  50. package/dist/handlers/delete-idea/tool.js.map +0 -1
  51. package/dist/handlers/delete-memo/handler.js +0 -52
  52. package/dist/handlers/delete-memo/handler.js.map +0 -1
  53. package/dist/handlers/delete-memo/index.js.map +0 -1
  54. package/dist/handlers/delete-memo/tool.js +0 -19
  55. package/dist/handlers/delete-memo/tool.js.map +0 -1
  56. package/dist/handlers/delete-note/handler.js +0 -64
  57. package/dist/handlers/delete-note/handler.js.map +0 -1
  58. package/dist/handlers/delete-note/index.js +0 -3
  59. package/dist/handlers/delete-note/index.js.map +0 -1
  60. package/dist/handlers/delete-note/tool.js +0 -19
  61. package/dist/handlers/delete-note/tool.js.map +0 -1
  62. package/dist/handlers/list-ideas/handler.js +0 -58
  63. package/dist/handlers/list-ideas/handler.js.map +0 -1
  64. package/dist/handlers/list-ideas/index.js +0 -3
  65. package/dist/handlers/list-ideas/index.js.map +0 -1
  66. package/dist/handlers/list-ideas/tool.js +0 -13
  67. package/dist/handlers/list-ideas/tool.js.map +0 -1
  68. package/dist/handlers/update-idea/handler.js +0 -77
  69. package/dist/handlers/update-idea/handler.js.map +0 -1
  70. package/dist/handlers/update-idea/index.js +0 -3
  71. package/dist/handlers/update-idea/index.js.map +0 -1
  72. package/dist/handlers/update-idea/tool.js +0 -23
  73. package/dist/handlers/update-idea/tool.js.map +0 -1
  74. package/dist/services/api/idea.js +0 -64
  75. package/dist/services/api/idea.js.map +0 -1
  76. package/dist/types/delete-memo.js +0 -2
  77. package/dist/types/delete-memo.js.map +0 -1
  78. package/dist/types/idea.js +0 -2
  79. package/dist/types/idea.js.map +0 -1
  80. /package/dist/handlers/{delete-memo → get-public-profile-context}/index.js +0 -0
package/README.md CHANGED
@@ -207,6 +207,7 @@ Detailed public tool documentation is available in [docs/tools.md](docs/tools.md
207
207
  - `paput_get_skill_sheet` - Get the full skill sheet.
208
208
  - `paput_update_skill_sheet_basic_info` - Update basic profile fields.
209
209
  - `paput_update_skill_sheet_self_pr` - Update the self PR section.
210
+ - `paput_update_skill_sheet_public_profile` - Save the AI-generated public profile (headline, summary, strength labels) shown on the AI Summary tab.
210
211
  - `paput_set_skill_sheet_skills` - Replace the full skill list with the provided final state.
211
212
  - `paput_upsert_skill_sheet_project` - Add or update a skill sheet project.
212
213
  - `paput_delete_skill_sheet_project` - Delete a skill sheet project.
@@ -0,0 +1,13 @@
1
+ ## PaPut Knowledge Capture Rules
2
+
3
+ When work is completed, a problem is solved, a design decision is settled, or reusable knowledge appears, automatically check whether there are candidates worth keeping in PaPut.
4
+
5
+ Only keep technical knowledge, decision criteria, and procedures that can be reused in other projects. Do not keep project-specific specifications, implementation details, operational rules, code, secrets, or customer data.
6
+
7
+ When candidates exist, check for duplicates with the local cache or similar memo information before saving. If a candidate is reusable, non-duplicate, non-sensitive, and not project-specific, add it to pending with `paput_add_knowledge_candidates` without waiting for user approval. After adding it, briefly report the title, categories, and candidate ID.
8
+
9
+ Use `paput_save_pending_candidate` only when the user explicitly approves saving a pending candidate to PaPut.
10
+
11
+ If a candidate may be duplicate, sensitive, project-specific, too narrow, or ambiguous, present its title, body, categories, and concern before adding it to pending, and ask the user to confirm.
12
+
13
+ When the user asks to review pending candidates or save them to PaPut, follow the `paput-save` workflow.
@@ -1,200 +1,29 @@
1
- import { existsSync, lstatSync, mkdirSync, readFileSync, rmSync, symlinkSync, writeFileSync, } from 'node:fs';
1
+ import { existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, rmSync, symlinkSync, writeFileSync, } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
3
  import { dirname, join } from 'node:path';
4
- export const SKILLS = [
5
- {
6
- name: 'paput-init',
7
- description: 'Use this to initialize PaPut usage, sync existing memos, and inspect unprocessed sessions.',
8
- body: `# PaPut Init
9
-
10
- Initialize PaPut knowledge capture.
11
-
12
- ## Steps
13
-
14
- 1. Check the local cache with \`paput_cache_status\`.
15
- 2. Sync existing PaPut memos into the local cache with \`paput_sync_remote_memos\`.
16
- 3. Scan unprocessed Claude/Codex sessions with \`paput_scan_sessions\`.
17
- 4. If unprocessed sessions exist, report the count and a short summary to the user.
18
- 5. Only when the user wants it, read the transcript with \`paput_get_session_transcript\` and create candidates that meet the extraction criteria below.
19
- 6. Before adding candidates with \`paput_add_knowledge_candidates\`, check that they do not contain project-specific specifications, implementation details, operational rules, code, customer data, or secrets.
20
- 7. After adding pending candidates, briefly report added candidates, duplicates, and rejected candidates.
21
-
22
- ## Extraction Criteria
23
-
24
- Only add technical knowledge, decision criteria, and procedures that can be reused in other projects.
25
-
26
- Do not add these to pending:
27
-
28
- - Project-specific specifications, screen names, button names, business workflows, operational rules, or local context.
29
- - Personal workflow notes about PRs, GitHub, Codex, Claude, AI review, editors, or OS operations.
30
- - Content that third parties cannot understand from the title and body alone.
31
- - Rejected designs, anecdotes, work logs, impressions, or decision histories without reusable guidance.
32
- - Content semantically close to existing memos or pending candidates.
33
- - Generic security, authorization, or tenant-isolation notes when similar knowledge already exists.
34
- - Code fragments or project-specific naming that has not been generalized.
35
-
36
- When unsure, do not add the candidate. Report that there is no knowledge to save or that the candidate was rejected.
37
-
38
- ## Notes
39
-
40
- - Do not save directly to PaPut.
41
- - Add candidates to pending first.
42
- - Report duplicates or similar memos when found.
43
- - Prefer high-quality pending candidates over increasing the pending count.`,
44
- },
45
- {
46
- name: 'paput-sync',
47
- description: 'Use this to sync existing PaPut memos into the local cache and improve duplicate detection.',
48
- body: `# PaPut Sync
49
-
50
- Sync existing PaPut memos into the local cache.
51
-
52
- ## Steps
53
-
54
- 1. Check the current cache state with \`paput_cache_status\`.
55
- 2. Run \`paput_sync_remote_memos\`.
56
- 3. Run \`paput_cache_status\` again and confirm the synced counts.
57
- 4. Briefly report the sync result to the user.
58
-
59
- ## Notes
60
-
61
- - Syncing is for duplicate detection.
62
- - Do not save or discard pending candidates.
63
- - Do not create new PaPut memos.`,
64
- },
65
- {
66
- name: 'paput-save',
67
- description: 'Use this to review pending candidates first, then save only candidates explicitly approved by the user. This skill never saves automatically.',
68
- body: `# PaPut Save
69
-
70
- Review pending knowledge candidates first, then save only candidates explicitly approved by the user. This skill never saves automatically.
71
-
72
- ## Steps
73
-
74
- 1. Fetch pending candidates with \`paput_list_pending_candidates\`.
75
- 2. Briefly show each candidate title, categories, summary, and similar memo information.
76
- 3. Save only candidates approved by the user with \`paput_save_pending_candidate\`.
77
- 4. Discard candidates the user rejects with \`paput_discard_pending_candidate\`.
78
- 5. Report the number of saved and discarded candidates.
79
-
80
- ## Notes
81
-
82
- - Do not save to PaPut without user approval.
83
- - Save multiple candidates only when the user explicitly asks to save all of them.
84
- - If the user asks to modify a title or body, apply the override when saving.
85
- - For ambiguous or likely duplicate candidates, present not saving as an option.`,
86
- },
87
- {
88
- name: 'paput-capture',
89
- description: 'Use this to extract reusable knowledge candidates from the current conversation or a specified topic and add them to pending.',
90
- body: `# PaPut Capture
91
-
92
- Extract reusable knowledge candidates from the current conversation or a user-specified topic and add them to pending. Use this as a manual fallback when the global rules did not suggest candidates automatically.
93
-
94
- ## When To Use
95
-
96
- - The user wants to keep knowledge learned while solving a problem.
97
- - The user wants to keep a design decision and its rationale.
98
- - The user wants to keep a best practice or debugging method.
99
- - The user asks to create notes for a specific topic.
100
-
101
- ## Steps
102
-
103
- 1. Check existing pending candidates with \`paput_list_pending_candidates\`.
104
- 2. Extract only reusable knowledge from the current conversation or the user-specified topic.
105
- 3. Keep candidates small, and prepare a title, body, categories, and visibility.
106
- 4. Do not add candidates that may duplicate existing pending candidates. Suggest using the existing candidate instead.
107
- 5. If a candidate is reusable, non-duplicate, non-sensitive, and not project-specific, add it to pending with \`paput_add_knowledge_candidates\` without waiting for user approval.
108
- 6. After adding candidates, briefly report the title, categories, and candidate ID.
109
-
110
- ## Candidate Rules
111
-
112
- - Keep each candidate small.
113
- - Make titles concise and searchable.
114
- - Include concrete procedures, causes, reasons, and decision criteria in the body.
115
- - To make candidates reusable, naturally include decision criteria, applicability conditions, reasons, pitfalls, and verification methods where possible.
116
- - Do not include project-specific specifications, implementation details, operational rules, code, secrets, or customer data.
117
- - Only capture technical knowledge, decision criteria, or procedures that can be reused in other projects.
118
- - Treat candidates as private by default.
119
- - Do not include Markdown heading lines that start with \`#\` in the body.
120
-
121
- ## Rejected Candidates
122
-
123
- Do not add these to pending:
124
-
125
- - Project-specific specifications, screen names, button names, business workflows, operational rules, or local context.
126
- - Personal workflow notes about PRs, GitHub, Codex, Claude, AI review, editors, or OS operations.
127
- - Content that third parties cannot understand from the title and body alone.
128
- - Rejected designs, anecdotes, work logs, impressions, or decision histories without reusable guidance.
129
- - Content semantically close to existing memos or pending candidates.
130
- - Generic security, authorization, or tenant-isolation notes when similar knowledge already exists.
131
- - Code fragments or project-specific naming that has not been generalized.
132
-
133
- ## Notes
134
-
135
- - Do not save directly to PaPut.
136
- - Save only to pending. Final PaPut saves are handled by \`paput-save\`.
137
- - Add safe candidates to pending without waiting for user approval. If a candidate may be duplicate, sensitive, project-specific, too narrow, or ambiguous, present the concern and ask before adding it.
138
- - Candidates created from past sessions use the source session updated timestamp as the PaPut memo creation timestamp when saved.
139
- - If there are no candidates, say that no reusable knowledge was found.`,
140
- },
141
- {
142
- name: 'paput-dashboard-analysis',
143
- description: "Use this to analyze the user's PaPut dashboard, goals, skill sheet, memos, notes, and categories; identify current position, strengths, growing areas, thin areas, missing knowledge, next knowledge to learn, and career-history phrasing; optionally save the generated dashboard analysis when the user asks to save it.",
144
- body: `# PaPut Dashboard Analysis
145
-
146
- Analyze the user's PaPut dashboard and goals. Use this skill when the user asks about dashboard analysis, goals, progress, strengths, weak areas, next learning topics, or career-history phrasing.
147
-
148
- ## Workflow
149
-
150
- 1. Call \`paput_get_dashboard_analysis_context\`.
151
- 2. Analyze the returned \`structuredContent\`.
152
- 3. Present the analysis in the user's language and tone.
153
- 4. Do not save the result unless the user explicitly asks to save it.
154
- 5. If the user asks to save, call \`paput_update_dashboard_analysis\`.
155
-
156
- ## Analysis Points
157
-
158
- Include these points when relevant:
159
-
160
- - Current position
161
- - Areas that can be presented as strengths
162
- - Areas that have been growing recently
163
- - Thin or underdeveloped areas
164
- - Knowledge missing against active goals
165
- - Knowledge to learn next
166
- - Phrasing suitable for a skill sheet or career history
167
-
168
- ## Rules
169
-
170
- - Do not claim that paput-mcp generated the analysis. The MCP client AI performs the analysis.
171
- - Use active goals as the main analysis basis.
172
- - Treat archived goals as historical context.
173
- - Do not recalculate dashboard continuity from activities. Use the dashboard summary values returned by the API.
174
- - Do not assume the user should write memos next.
175
- - Focus on how knowledge naturally accumulated through daily development can grow toward the user's goals.
176
- - When saving, map the generated result to:
177
- - \`current_summary\`
178
- - \`strengths\`
179
- - \`growing_areas\`
180
- - \`weak_areas\`
181
- - \`next_knowledge_suggestions\`
182
- - \`analyzed_at\``,
183
- },
184
- ];
185
- const RULES = `## PaPut Knowledge Capture Rules
186
-
187
- When work is completed, a problem is solved, a design decision is settled, or reusable knowledge appears, automatically check whether there are candidates worth keeping in PaPut.
188
-
189
- Only keep technical knowledge, decision criteria, and procedures that can be reused in other projects. Do not keep project-specific specifications, implementation details, operational rules, code, secrets, or customer data.
190
-
191
- When candidates exist, check for duplicates with the local cache or similar memo information before saving. If a candidate is reusable, non-duplicate, non-sensitive, and not project-specific, add it to pending with \`paput_add_knowledge_candidates\` without waiting for user approval. After adding it, briefly report the title, categories, and candidate ID.
192
-
193
- Use \`paput_save_pending_candidate\` only when the user explicitly approves saving a pending candidate to PaPut.
194
-
195
- If a candidate may be duplicate, sensitive, project-specific, too narrow, or ambiguous, present its title, body, categories, and concern before adding it to pending, and ask the user to confirm.
196
-
197
- When the user asks to review pending candidates or save them to PaPut, follow the \`paput-save\` workflow.`;
4
+ import { fileURLToPath } from 'node:url';
5
+ const skillsDir = fileURLToPath(new URL('./skills', import.meta.url));
6
+ const rulesDir = fileURLToPath(new URL('./rules', import.meta.url));
7
+ function parseSkill(markdown, fallbackName) {
8
+ const match = markdown.match(/^---\n([\s\S]*?)\n---\n\n([\s\S]*?)\n?$/);
9
+ if (!match) {
10
+ throw new Error(`Invalid SKILL.md format: ${fallbackName}`);
11
+ }
12
+ const frontmatter = match[1];
13
+ const body = match[2];
14
+ const name = frontmatter.match(/^name:\s*(.*)$/m)?.[1]?.trim() ?? fallbackName;
15
+ const description = frontmatter.match(/^description:\s*(.*)$/m)?.[1]?.trim() ?? '';
16
+ return { name, description, body };
17
+ }
18
+ function loadSkills() {
19
+ return readdirSync(skillsDir, { withFileTypes: true })
20
+ .filter((entry) => entry.isDirectory())
21
+ .map((entry) => entry.name)
22
+ .sort()
23
+ .map((dirName) => parseSkill(readFileSync(join(skillsDir, dirName, 'SKILL.md'), 'utf8'), dirName));
24
+ }
25
+ export const SKILLS = loadSkills();
26
+ const RULES = readFileSync(join(rulesDir, 'paput-knowledge-capture.md'), 'utf8').trim();
198
27
  const RULE_START = '<!-- paput-mcp:start -->';
199
28
  const RULE_END = '<!-- paput-mcp:end -->';
200
29
  export function setupAi(args) {
@@ -1 +1 @@
1
- {"version":3,"file":"setup-ai.js","sourceRoot":"","sources":["../../src/cli/setup-ai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-ai.js","sourceRoot":"","sources":["../../src/cli/setup-ai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: paput-capture
3
+ description: Use this to extract reusable knowledge candidates from the current conversation or a specified topic and add them to pending.
4
+ ---
5
+
6
+ # PaPut Capture
7
+
8
+ Extract reusable knowledge candidates from the current conversation or a user-specified topic and add them to pending. Use this as a manual fallback when the global rules did not suggest candidates automatically.
9
+
10
+ ## When To Use
11
+
12
+ - The user wants to keep knowledge learned while solving a problem.
13
+ - The user wants to keep a design decision and its rationale.
14
+ - The user wants to keep a best practice or debugging method.
15
+ - The user asks to create notes for a specific topic.
16
+
17
+ ## Steps
18
+
19
+ 1. Check existing pending candidates with `paput_list_pending_candidates`.
20
+ 2. Extract only reusable knowledge from the current conversation or the user-specified topic.
21
+ 3. Keep candidates small, and prepare a title, body, categories, and visibility.
22
+ 4. Do not add candidates that may duplicate existing pending candidates. Suggest using the existing candidate instead.
23
+ 5. If a candidate is reusable, non-duplicate, non-sensitive, and not project-specific, add it to pending with `paput_add_knowledge_candidates` without waiting for user approval.
24
+ 6. After adding candidates, briefly report the title, categories, and candidate ID.
25
+
26
+ ## Candidate Rules
27
+
28
+ - Keep each candidate small.
29
+ - Make titles concise and searchable.
30
+ - Include concrete procedures, causes, reasons, and decision criteria in the body.
31
+ - To make candidates reusable, naturally include decision criteria, applicability conditions, reasons, pitfalls, and verification methods where possible.
32
+ - Do not include project-specific specifications, implementation details, operational rules, code, secrets, or customer data.
33
+ - Only capture technical knowledge, decision criteria, or procedures that can be reused in other projects.
34
+ - Treat candidates as private by default.
35
+ - Do not include Markdown heading lines that start with `#` in the body.
36
+
37
+ ## Rejected Candidates
38
+
39
+ Do not add these to pending:
40
+
41
+ - Project-specific specifications, screen names, button names, business workflows, operational rules, or local context.
42
+ - Personal workflow notes about PRs, GitHub, Codex, Claude, AI review, editors, or OS operations.
43
+ - Content that third parties cannot understand from the title and body alone.
44
+ - Rejected designs, anecdotes, work logs, impressions, or decision histories without reusable guidance.
45
+ - Content semantically close to existing memos or pending candidates.
46
+ - Generic security, authorization, or tenant-isolation notes when similar knowledge already exists.
47
+ - Code fragments or project-specific naming that has not been generalized.
48
+
49
+ ## Notes
50
+
51
+ - Do not save directly to PaPut.
52
+ - Save only to pending. Final PaPut saves are handled by `paput-save`.
53
+ - Add safe candidates to pending without waiting for user approval. If a candidate may be duplicate, sensitive, project-specific, too narrow, or ambiguous, present the concern and ask before adding it.
54
+ - Candidates created from past sessions use the source session updated timestamp as the PaPut memo creation timestamp when saved.
55
+ - If there are no candidates, say that no reusable knowledge was found.
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: paput-dashboard-analysis
3
+ description: Use this to analyze the user's PaPut dashboard, goals, skill sheet, memos, notes, and categories; identify current position, strengths, growing areas, thin areas, missing knowledge, next knowledge to learn, and career-history phrasing; optionally save the generated dashboard analysis when the user asks to save it.
4
+ ---
5
+
6
+ # PaPut Dashboard Analysis
7
+
8
+ Analyze the user's PaPut dashboard and goals. Use this skill when the user asks about dashboard analysis, goals, progress, strengths, weak areas, next learning topics, or career-history phrasing.
9
+
10
+ ## Workflow
11
+
12
+ 1. Call `paput_get_dashboard_analysis_context`.
13
+ 2. Analyze the returned `structuredContent`.
14
+ 3. Present the analysis in the user's language and tone.
15
+ 4. Do not save the result unless the user explicitly asks to save it.
16
+ 5. If the user asks to save, call `paput_update_dashboard_analysis`.
17
+
18
+ ## Analysis Points
19
+
20
+ Include these points when relevant:
21
+
22
+ - Current position
23
+ - Areas that can be presented as strengths
24
+ - Areas that have been growing recently
25
+ - Thin or underdeveloped areas
26
+ - Knowledge missing against active goals
27
+ - Knowledge to learn next
28
+ - Phrasing suitable for a skill sheet or career history
29
+
30
+ ## Rules
31
+
32
+ - Do not claim that paput-mcp generated the analysis. The MCP client AI performs the analysis.
33
+ - Use active goals as the main analysis basis.
34
+ - Treat archived goals as historical context.
35
+ - Do not recalculate dashboard continuity from activities. Use the dashboard summary values returned by the API.
36
+ - Do not assume the user should write memos next.
37
+ - Focus on how knowledge naturally accumulated through daily development can grow toward the user's goals.
38
+ - When saving, map the generated result to:
39
+ - `current_summary`
40
+ - `strengths`
41
+ - `growing_areas`
42
+ - `weak_areas`
43
+ - `next_knowledge_suggestions`
44
+ - `analyzed_at`
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: paput-init
3
+ description: Use this to initialize PaPut usage, sync existing memos, and inspect unprocessed sessions.
4
+ ---
5
+
6
+ # PaPut Init
7
+
8
+ Initialize PaPut knowledge capture.
9
+
10
+ ## Steps
11
+
12
+ 1. Check the local cache with `paput_cache_status`.
13
+ 2. Sync existing PaPut memos into the local cache with `paput_sync_remote_memos`.
14
+ 3. Scan unprocessed Claude/Codex sessions with `paput_scan_sessions`.
15
+ 4. If unprocessed sessions exist, report the count and a short summary to the user.
16
+ 5. Only when the user wants it, read the transcript with `paput_get_session_transcript` and create candidates that meet the extraction criteria below.
17
+ 6. Before adding candidates with `paput_add_knowledge_candidates`, check that they do not contain project-specific specifications, implementation details, operational rules, code, customer data, or secrets.
18
+ 7. After adding pending candidates, briefly report added candidates, duplicates, and rejected candidates.
19
+
20
+ ## Extraction Criteria
21
+
22
+ Only add technical knowledge, decision criteria, and procedures that can be reused in other projects.
23
+
24
+ Do not add these to pending:
25
+
26
+ - Project-specific specifications, screen names, button names, business workflows, operational rules, or local context.
27
+ - Personal workflow notes about PRs, GitHub, Codex, Claude, AI review, editors, or OS operations.
28
+ - Content that third parties cannot understand from the title and body alone.
29
+ - Rejected designs, anecdotes, work logs, impressions, or decision histories without reusable guidance.
30
+ - Content semantically close to existing memos or pending candidates.
31
+ - Generic security, authorization, or tenant-isolation notes when similar knowledge already exists.
32
+ - Code fragments or project-specific naming that has not been generalized.
33
+
34
+ When unsure, do not add the candidate. Report that there is no knowledge to save or that the candidate was rejected.
35
+
36
+ ## Notes
37
+
38
+ - Do not save directly to PaPut.
39
+ - Add candidates to pending first.
40
+ - Report duplicates or similar memos when found.
41
+ - Prefer high-quality pending candidates over increasing the pending count.
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: paput-project-summary
3
+ description: Use this to generate and optionally save an AI summary for a PaPut skill sheet project from the project information and memos linked to that project. Trigger when the user asks to summarize project-linked memos, create a project summary, refresh a skill sheet project AI summary, or save a project summary.
4
+ ---
5
+
6
+ # PaPut Project Summary
7
+
8
+ Generate an AI summary for a skill sheet project from the project information and the memos linked to that project.
9
+
10
+ ## Workflow
11
+
12
+ 1. Identify the target project ID. If the user gives a project name but not an ID, call `paput_get_skill_sheet` and choose the matching project; ask a concise clarification only when the match is ambiguous.
13
+ 2. Call `paput_get_skill_sheet_project_summary_context` with `project_id`.
14
+ 3. Generate a concise project summary from the returned `structuredContent`.
15
+ 4. Present the draft in the user's language and tone.
16
+ 5. Do not save unless the user explicitly asks to save, update, or apply the summary.
17
+ 6. If the user asks to save, call `paput_update_skill_sheet_project_ai_summary`.
18
+ 7. Verify the saved result with `paput_get_skill_sheet`.
19
+
20
+ ## Summary Focus
21
+
22
+ Include these points when the source material supports them:
23
+
24
+ - Project purpose and domain
25
+ - User role and responsibilities
26
+ - Main technologies and processes
27
+ - Notable implementation, design, or problem-solving work
28
+ - Reusable strengths shown by linked memos
29
+ - Outcome or impact, without inventing metrics
30
+
31
+ ## Rules
32
+
33
+ - Do not claim that paput-mcp generated the summary. The MCP client AI performs the generation.
34
+ - Base the summary only on the project context and linked memo bodies returned by the context tool.
35
+ - Do not use unrelated memos, private goals, or dashboard analysis.
36
+ - Do not treat memo count as proof of proficiency.
37
+ - Do not invent technologies, responsibilities, impact, dates, or team scale.
38
+ - If the linked memos are thin, say what is missing instead of overstating the project.
39
+ - Keep the summary suitable for a skill sheet or career history.
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: paput-public-profile-summary
3
+ description: Use this to generate and save the user's PaPut public profile summary (headline, profile summary, strength labels) shown on the AI Summary tab to recruiters. Build it only from public materials such as the skill sheet, public memos and notes, and category and growth aggregates. Never use private dashboard analysis or goals.
4
+ ---
5
+
6
+ # PaPut Public Profile Summary
7
+
8
+ Generate the public profile shown on the AI Summary tab: headline, profile_summary, and strength_labels. Use this skill when the user wants to create or refresh their public profile summary for recruiters or hiring managers.
9
+
10
+ ## Workflow
11
+
12
+ 1. Call `paput_get_public_profile_context`.
13
+ 2. Generate the summary from the returned `structuredContent`.
14
+ 3. Present the draft in the user's language and tone, and explain what each field will become.
15
+ 4. Do not save unless the user explicitly asks to save it.
16
+ 5. If the user asks to save, call `paput_update_skill_sheet_public_profile`.
17
+ 6. Verify the saved result with `paput_get_skill_sheet`.
18
+
19
+ ## Output
20
+
21
+ - headline: one-line catchphrase of what the person can do (~100 chars).
22
+ - profile_summary: 3-4 sentence overall summary written for a recruiter. Convey strengths and continuity in prose.
23
+ - strength_labels: top 3-5 strengths. Each has a label, an optional short description, and evidence via `category_names` and `project_ids`.
24
+
25
+ ## Materials
26
+
27
+ Use only public materials returned by the context tool:
28
+
29
+ - Skill sheet (years_of_experience, skills, projects, self_pr)
30
+ - Public memos and notes
31
+ - Category distribution (`knowledge_map`) and recently growing areas (`growing_areas`)
32
+ - Representative projects and their AI summaries
33
+
34
+ ## Rules
35
+
36
+ - Do not claim that paput-mcp generated the summary. The MCP client AI performs the generation.
37
+ - Use public materials only. Never use dashboard analysis or goals; they are private and for the user only.
38
+ - Do not present memo counts as skill proficiency. Activity volume is not mastery.
39
+ - Tie strengths to concrete memos or projects, and do not exaggerate.
40
+ - Keep the tone factual and suitable for a recruiter reading it in a short time.
41
+ - When saving, map the generated result to `headline`, `profile_summary`, and `strength_labels`.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: paput-save
3
+ description: Use this to review pending candidates first, then save only candidates explicitly approved by the user. This skill never saves automatically.
4
+ ---
5
+
6
+ # PaPut Save
7
+
8
+ Review pending knowledge candidates first, then save only candidates explicitly approved by the user. This skill never saves automatically.
9
+
10
+ ## Steps
11
+
12
+ 1. Fetch pending candidates with `paput_list_pending_candidates`.
13
+ 2. Briefly show each candidate title, categories, summary, and similar memo information.
14
+ 3. Save only candidates approved by the user with `paput_save_pending_candidate`.
15
+ 4. Discard candidates the user rejects with `paput_discard_pending_candidate`.
16
+ 5. Report the number of saved and discarded candidates.
17
+
18
+ ## Notes
19
+
20
+ - Do not save to PaPut without user approval.
21
+ - Save multiple candidates only when the user explicitly asks to save all of them.
22
+ - If the user asks to modify a title or body, apply the override when saving.
23
+ - For ambiguous or likely duplicate candidates, present not saving as an option.
@@ -0,0 +1,21 @@
1
+ ---
2
+ name: paput-sync
3
+ description: Use this to sync existing PaPut memos into the local cache and improve duplicate detection.
4
+ ---
5
+
6
+ # PaPut Sync
7
+
8
+ Sync existing PaPut memos into the local cache.
9
+
10
+ ## Steps
11
+
12
+ 1. Check the current cache state with `paput_cache_status`.
13
+ 2. Run `paput_sync_remote_memos`.
14
+ 3. Run `paput_cache_status` again and confirm the synced counts.
15
+ 4. Briefly report the sync result to the user.
16
+
17
+ ## Notes
18
+
19
+ - Syncing is for duplicate detection.
20
+ - Do not save or discard pending candidates.
21
+ - Do not create new PaPut memos.
@@ -0,0 +1,81 @@
1
+ import { getPublicProfileContext } from '../../services/api/skill-sheet.js';
2
+ export async function handleGetPublicProfileContext(_args, apiClient) {
3
+ try {
4
+ const context = await getPublicProfileContext(apiClient);
5
+ const skillSheet = context.skill_sheet;
6
+ const yearsOfExperience = skillSheet?.years_of_experience ?? 0;
7
+ const projectCount = skillSheet?.projects?.length ?? 0;
8
+ const strengthCount = skillSheet?.strength_labels?.length ?? 0;
9
+ const growingCount = Array.isArray(context.growing_areas)
10
+ ? context.growing_areas.length
11
+ : 0;
12
+ const recentMemoCount = context.recent_public_memos?.length ?? 0;
13
+ const prompt = buildPrompt({
14
+ yearsOfExperience,
15
+ projectCount,
16
+ strengthCount,
17
+ growingCount,
18
+ recentMemoCount,
19
+ hasProfileSummary: Boolean(skillSheet?.profile_summary),
20
+ });
21
+ return {
22
+ structuredContent: {
23
+ ...context,
24
+ prompt,
25
+ },
26
+ content: [
27
+ {
28
+ type: 'text',
29
+ text: `Public profile context:
30
+ Years of experience: ${yearsOfExperience}
31
+ Projects: ${projectCount}
32
+ Existing strength labels: ${strengthCount}
33
+ Growing areas: ${growingCount}
34
+ Recent public memos: ${recentMemoCount}
35
+ Existing profile summary: ${skillSheet?.profile_summary ? 'available' : 'not available'}
36
+
37
+ ${prompt}`,
38
+ },
39
+ ],
40
+ };
41
+ }
42
+ catch (error) {
43
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
44
+ return {
45
+ content: [
46
+ {
47
+ type: 'text',
48
+ text: `Error while fetching public profile context: ${errorMessage}`,
49
+ },
50
+ ],
51
+ isError: true,
52
+ };
53
+ }
54
+ }
55
+ function buildPrompt(context) {
56
+ return `Generate a public AI summary as the MCP client AI, using the PaPut data in structuredContent. This summary is shown on the AI Summary tab to recruiters and hiring managers. paput-mcp does not contain generation logic, so read the source data and write the summary yourself. Write the final output in the user's language and match the user's tone when possible.
57
+
58
+ Use public materials only. The structuredContent intentionally excludes private dashboard analysis and goals. Never infer or reference them.
59
+
60
+ Produce these fields:
61
+ 1. headline: a one-line catchphrase of what the person can do (around 100 characters).
62
+ 2. profile_summary: a 3-4 sentence overall summary written for a recruiter, conveying strengths and continuity in prose.
63
+ 3. strength_labels: the top 3-5 strengths. Each has a label, an optional short description, and evidence via category_names and project_ids drawn from the context.
64
+
65
+ Guidance:
66
+ - Tie strengths to concrete projects and public memos in the context. Do not exaggerate.
67
+ - Do not present memo counts as skill proficiency. Activity volume is not mastery.
68
+ - Use the category map (knowledge_map) and growing_areas to describe what the person works on, not as ability scores.
69
+ - Keep the tone factual and easy to read in a short time.
70
+
71
+ Context summary:
72
+ - Years of experience: ${context.yearsOfExperience}
73
+ - Projects: ${context.projectCount}
74
+ - Existing strength labels: ${context.strengthCount}
75
+ - Growing areas: ${context.growingCount}
76
+ - Recent public memos: ${context.recentMemoCount}
77
+ - Existing profile summary: ${context.hasProfileSummary ? 'available' : 'not available'}
78
+
79
+ Present the draft to the user first. Only when the user asks to save, call paput_update_skill_sheet_public_profile with headline, profile_summary, and strength_labels, then verify with paput_get_skill_sheet.`;
80
+ }
81
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/get-public-profile-context/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAE5E,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,KAA0C,EAC1C,SAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,MAAM,iBAAiB,GAAG,UAAU,EAAE,mBAAmB,IAAI,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,UAAU,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;QACvD,MAAM,aAAa,GAAG,UAAU,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;YACvD,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM;YAC9B,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,CAAC;QAEjE,MAAM,MAAM,GAAG,WAAW,CAAC;YACzB,iBAAiB;YACjB,YAAY;YACZ,aAAa;YACb,YAAY;YACZ,eAAe;YACf,iBAAiB,EAAE,OAAO,CAAC,UAAU,EAAE,eAAe,CAAC;SACxD,CAAC,CAAC;QAEH,OAAO;YACL,iBAAiB,EAAE;gBACjB,GAAG,OAAO;gBACV,MAAM;aACP;YACD,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;uBACO,iBAAiB;YAC5B,YAAY;4BACI,aAAa;iBACxB,YAAY;uBACN,eAAe;4BACV,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe;;EAErF,MAAM,EAAE;iBACD;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAE3D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,gDAAgD,YAAY,EAAE;iBACrE;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,OAOpB;IACC,OAAO;;;;;;;;;;;;;;;;yBAgBgB,OAAO,CAAC,iBAAiB;cACpC,OAAO,CAAC,YAAY;8BACJ,OAAO,CAAC,aAAa;mBAChC,OAAO,CAAC,YAAY;yBACd,OAAO,CAAC,eAAe;8BAClB,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe;;gNAEyH,CAAC;AACjN,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/handlers/get-public-profile-context/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}