@nexus-cortex/server 4.26.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 (130) hide show
  1. package/.cortex/agents/AGENT_PROFILE_GUIDE.md +307 -0
  2. package/.cortex/agents/README.md +268 -0
  3. package/.cortex/agents/a-frontend-landing-page-designer.md +41 -0
  4. package/.cortex/agents/autoresearch-agent.md +49 -0
  5. package/.cortex/agents/code-reviewer.md +63 -0
  6. package/.cortex/agents/context-research.md +26 -0
  7. package/.cortex/agents/doc-writer.md +92 -0
  8. package/.cortex/agents/explore.md +63 -0
  9. package/.cortex/agents/new-model-api-integrator-analyst.md +41 -0
  10. package/.cortex/agents/plan.md +109 -0
  11. package/.cortex/agents/pr-architecture-reviewer.md +77 -0
  12. package/.cortex/agents/pr-code-quality.md +78 -0
  13. package/.cortex/agents/pr-implementer.md +50 -0
  14. package/.cortex/agents/pr-security-auditor.md +62 -0
  15. package/.cortex/agents/pr-test-writer.md +67 -0
  16. package/.cortex/agents/refactor.md +118 -0
  17. package/.cortex/agents/test-writer.md +72 -0
  18. package/.cortex/agents/web-researcher.md +72 -0
  19. package/.cortex/bench/tasks/sample-tasks.json +20 -0
  20. package/.cortex/commands/compare.md +14 -0
  21. package/.cortex/commands/deps.md +16 -0
  22. package/.cortex/commands/diff.md +14 -0
  23. package/.cortex/commands/explain.md +16 -0
  24. package/.cortex/commands/find-bug.md +13 -0
  25. package/.cortex/commands/profile.md +15 -0
  26. package/.cortex/commands/review.md +18 -0
  27. package/.cortex/commands/search.md +16 -0
  28. package/.cortex/commands/test.md +15 -0
  29. package/.cortex/permissions.dev.json +20 -0
  30. package/.cortex/permissions.example.json +71 -0
  31. package/.cortex/permissions.prod.json +63 -0
  32. package/.cortex/permissions.test.json +19 -0
  33. package/.cortex/skills/autoresearch/SKILL.md +77 -0
  34. package/.cortex/skills/autoresearch/personas/README.md +45 -0
  35. package/.cortex/skills/autoresearch/personas/aggressive-refactor.md +25 -0
  36. package/.cortex/skills/autoresearch/personas/creative.md +29 -0
  37. package/.cortex/skills/autoresearch/personas/perf-hunter.md +27 -0
  38. package/.cortex/skills/autoresearch/personas/precise.md +23 -0
  39. package/.cortex/skills/autoresearch/personas/root-cause.md +26 -0
  40. package/.cortex/skills/autoresearch/personas/security-auditor.md +29 -0
  41. package/.cortex/skills/autoresearch/personas/skeptic-reviewer.md +31 -0
  42. package/.cortex/skills/autoresearch/personas/test-first.md +25 -0
  43. package/.cortex/skills/best-of-n/SKILL.md +76 -0
  44. package/.cortex/skills/cortex/SKILL.md +834 -0
  45. package/.cortex/skills/cortex-bench/SKILL.md +354 -0
  46. package/.cortex/skills/docx/SKILL.md +83 -0
  47. package/.cortex/skills/pdf-documents/SKILL.md +297 -0
  48. package/.cortex/skills/pdf-documents/sections/01-image-acquisition.md +132 -0
  49. package/.cortex/skills/pdf-documents/sections/02-ai-image-generation.md +274 -0
  50. package/.cortex/skills/pdf-documents/sections/03-paper-sizes.md +89 -0
  51. package/.cortex/skills/pdf-documents/sections/04-design-system.md +549 -0
  52. package/.cortex/skills/pdf-documents/sections/05-css-print-rules.md +135 -0
  53. package/.cortex/skills/pdf-documents/sections/06-svg-charts.md +100 -0
  54. package/.cortex/skills/pdf-documents/sections/07-templates.md +224 -0
  55. package/.cortex/skills/pdf-documents/sections/08-scaled-output.md +164 -0
  56. package/.cortex/skills/pdf-documents/sections/09-preview-qa.md +66 -0
  57. package/.cortex/skills/pdf-documents/sections/10-reading-pdfs.md +499 -0
  58. package/.cortex/skills/pdf-documents/sections/11-form-filling.md +241 -0
  59. package/.cortex/skills/pptx/SKILL.md +90 -0
  60. package/.cortex/skills/resume-analyst/SKILL.md +373 -0
  61. package/.cortex/skills/verify-work/SKILL.md +74 -0
  62. package/.cortex/skills/xlsx/SKILL.md +101 -0
  63. package/.cortex/system-messages/messages/WORK_QUALITY.md +159 -0
  64. package/.cortex/system-messages/registry.json +18 -0
  65. package/LICENSE +202 -0
  66. package/NOTICE +2 -0
  67. package/README.md +13 -0
  68. package/bin/cortex-daemon.js +47 -0
  69. package/bin/cortex-server.js +15 -0
  70. package/dist/index.d.ts +30 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +513 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/middleware/cors.d.ts +10 -0
  75. package/dist/middleware/cors.d.ts.map +1 -0
  76. package/dist/middleware/cors.js +11 -0
  77. package/dist/middleware/cors.js.map +1 -0
  78. package/dist/middleware/errorHandler.d.ts +10 -0
  79. package/dist/middleware/errorHandler.d.ts.map +1 -0
  80. package/dist/middleware/errorHandler.js +15 -0
  81. package/dist/middleware/errorHandler.js.map +1 -0
  82. package/dist/routes/approval.d.ts +2 -0
  83. package/dist/routes/approval.d.ts.map +1 -0
  84. package/dist/routes/approval.js +96 -0
  85. package/dist/routes/approval.js.map +1 -0
  86. package/dist/routes/config.d.ts +2 -0
  87. package/dist/routes/config.d.ts.map +1 -0
  88. package/dist/routes/config.js +70 -0
  89. package/dist/routes/config.js.map +1 -0
  90. package/dist/routes/health.d.ts +2 -0
  91. package/dist/routes/health.d.ts.map +1 -0
  92. package/dist/routes/health.js +1031 -0
  93. package/dist/routes/health.js.map +1 -0
  94. package/dist/routes/mcp.d.ts +2 -0
  95. package/dist/routes/mcp.d.ts.map +1 -0
  96. package/dist/routes/mcp.js +251 -0
  97. package/dist/routes/mcp.js.map +1 -0
  98. package/dist/routes/messages.d.ts +5 -0
  99. package/dist/routes/messages.d.ts.map +1 -0
  100. package/dist/routes/messages.js +136 -0
  101. package/dist/routes/messages.js.map +1 -0
  102. package/dist/routes/middleware.d.ts +2 -0
  103. package/dist/routes/middleware.d.ts.map +1 -0
  104. package/dist/routes/middleware.js +146 -0
  105. package/dist/routes/middleware.js.map +1 -0
  106. package/dist/routes/models.d.ts +2 -0
  107. package/dist/routes/models.d.ts.map +1 -0
  108. package/dist/routes/models.js +29 -0
  109. package/dist/routes/models.js.map +1 -0
  110. package/dist/routes/permissions.d.ts +2 -0
  111. package/dist/routes/permissions.d.ts.map +1 -0
  112. package/dist/routes/permissions.js +253 -0
  113. package/dist/routes/permissions.js.map +1 -0
  114. package/dist/routes/pr.d.ts +2 -0
  115. package/dist/routes/pr.d.ts.map +1 -0
  116. package/dist/routes/pr.js +222 -0
  117. package/dist/routes/pr.js.map +1 -0
  118. package/dist/routes/sessions.d.ts +2 -0
  119. package/dist/routes/sessions.d.ts.map +1 -0
  120. package/dist/routes/sessions.js +628 -0
  121. package/dist/routes/sessions.js.map +1 -0
  122. package/dist/routes/system-messages.d.ts +2 -0
  123. package/dist/routes/system-messages.d.ts.map +1 -0
  124. package/dist/routes/system-messages.js +146 -0
  125. package/dist/routes/system-messages.js.map +1 -0
  126. package/dist/routes/tools.d.ts +2 -0
  127. package/dist/routes/tools.d.ts.map +1 -0
  128. package/dist/routes/tools.js +79 -0
  129. package/dist/routes/tools.js.map +1 -0
  130. package/package.json +63 -0
@@ -0,0 +1,241 @@
1
+ # PDF Form Detection & Filling
2
+
3
+ ## Overview
4
+
5
+ Detect AcroForm fields in existing PDF documents, inventory every field for the
6
+ user, fill values programmatically with baked appearance streams, and deliver
7
+ a completed PDF. Works with interactive AcroForm PDFs and provides a coordinate-overlay
8
+ fallback for scanned/non-interactive forms.
9
+
10
+ All processing via PyMuPDF. Install: `pip install pymupdf`
11
+
12
+ ---
13
+
14
+ ## Step 1: Install PyMuPDF (if needed)
15
+
16
+ ```bash
17
+ pip install pymupdf
18
+ ```
19
+
20
+ ## Step 2: Detect and Inventory All Fields
21
+
22
+ ```python
23
+ import fitz
24
+ import json
25
+
26
+ doc = fitz.open('form.pdf')
27
+
28
+ # PyMuPDF widget field_type values:
29
+ # 0=unknown, 1=PushButton, 2=CheckBox, 3=RadioButton,
30
+ # 4=ListBox, 5=ComboBox, 6=Signature, 7=Text
31
+ TYPE_NAMES = {0:'unknown', 1:'button', 2:'checkbox', 3:'radio',
32
+ 4:'listbox', 5:'combobox', 6:'signature', 7:'text'}
33
+
34
+ fields = []
35
+ for page_num in range(len(doc)):
36
+ page = doc[page_num]
37
+ for widget in page.widgets():
38
+ field = {
39
+ 'page': page_num + 1,
40
+ 'index': len(fields),
41
+ 'name': widget.field_name,
42
+ 'type': TYPE_NAMES.get(widget.field_type, 'unknown'),
43
+ 'type_id': widget.field_type,
44
+ 'value': widget.field_value,
45
+ 'rect': list(widget.rect),
46
+ 'read_only': bool(widget.field_flags & 1),
47
+ }
48
+ if widget.field_type in (4, 5) and widget.choice_values:
49
+ field['options'] = widget.choice_values
50
+ if widget.field_type == 7 and widget.text_maxlen > 0:
51
+ field['max_length'] = widget.text_maxlen
52
+ fields.append(field)
53
+
54
+ doc.close()
55
+
56
+ print(f'Found {len(fields)} form fields across {len(doc)} pages')
57
+ for f in fields:
58
+ ro = ' [READ-ONLY]' if f['read_only'] else ''
59
+ val = f' = "{f["value"]}"' if f['value'] else ''
60
+ opts = f' options: {f["options"]}' if 'options' in f else ''
61
+ print(f' [{f["index"]:2d}] p{f["page"]} | {f["type"]:12} | {f["name"]}{val}{opts}{ro}')
62
+ ```
63
+
64
+ Present the inventory to the user and collect values before filling.
65
+
66
+ **IMPORTANT:** Fields with duplicate names (e.g., multiple "County" fields on the same
67
+ form) must be addressed by index, not by name. The index is the widget's position
68
+ in the `page.widgets()` list.
69
+
70
+ ## Step 3: Fill the Form
71
+
72
+ ```python
73
+ import fitz
74
+
75
+ fill_data = {
76
+ 'Full Name': 'John A. Smith',
77
+ 'Date of Birth': '03/15/1985',
78
+ 'State': 'TX',
79
+ 'I Agree': True,
80
+ }
81
+
82
+ # For duplicate field names, use index-based overrides:
83
+ # fill_by_index = { 10: 'Jefferson', 12: 'Jefferson', 23: 'Jefferson' }
84
+
85
+ doc = fitz.open('form.pdf')
86
+
87
+ for page in doc:
88
+ widgets = list(page.widgets())
89
+ for i, widget in enumerate(widgets):
90
+ # Set font properties for baked appearance streams
91
+ if widget.field_type in (6, 7): # Signature or Text
92
+ widget.text_fontsize = 0 # auto-fit to field rect
93
+ widget.text_color = (0, 0, 0)
94
+
95
+ # Index-based overrides first (for duplicate field names)
96
+ # if i in fill_by_index:
97
+ # widget.field_value = fill_by_index[i]
98
+ # widget.update()
99
+ # continue
100
+
101
+ name = widget.field_name
102
+ if name not in fill_data:
103
+ continue
104
+
105
+ value = fill_data[name]
106
+
107
+ if widget.field_type == 2: # checkbox
108
+ widget.field_value = 'Yes' if value else 'Off'
109
+ elif widget.field_type == 3: # radio
110
+ widget.field_value = str(value)
111
+ elif widget.field_type == 6: # signature — typed name
112
+ widget.field_value = str(value)
113
+ else:
114
+ widget.field_value = str(value)
115
+
116
+ widget.update()
117
+
118
+ # ── CRITICAL: Bake appearance streams ──────────────────────────
119
+ # Set NeedAppearances=false so ALL PDF viewers render the filled
120
+ # values. Without this, many viewers (web, mobile, lightweight)
121
+ # show blank fields — the #1 cause of "it filled but looks empty."
122
+ cat_xref = doc.pdf_catalog()
123
+ acro_ref = doc.xref_get_key(cat_xref, 'AcroForm')
124
+ if acro_ref[0] == 'xref':
125
+ af_xref = int(acro_ref[1].split()[0])
126
+ doc.xref_set_key(af_xref, 'NeedAppearances', 'false')
127
+
128
+ doc.save('form-filled.pdf', garbage=3, deflate=True)
129
+ doc.close()
130
+ print('Saved filled form with baked appearances')
131
+ ```
132
+
133
+ ### Why NeedAppearances Matters
134
+
135
+ PDF forms have two rendering modes:
136
+ - **NeedAppearances=true** — asks the viewer to regenerate visual appearances at
137
+ open time. Many viewers DON'T support this → fields appear blank.
138
+ - **NeedAppearances=false** — PyMuPDF's `widget.update()` bakes an AP (appearance
139
+ stream) into each field. These render in ALL viewers.
140
+
141
+ **Always set NeedAppearances=false after filling.** This is the difference between
142
+ a form that works everywhere and one that looks empty in half of all viewers.
143
+
144
+ ## Step 4: Verify All Fields Filled
145
+
146
+ ```python
147
+ import fitz
148
+
149
+ doc = fitz.open('form-filled.pdf')
150
+ filled = 0
151
+ empty = []
152
+ for page in doc:
153
+ for i, w in enumerate(page.widgets()):
154
+ v = w.field_value or ''
155
+ if v and v != 'Off':
156
+ filled += 1
157
+ elif w.field_type != 2:
158
+ empty.append(f'[{i}] {w.field_name}')
159
+ else:
160
+ filled += 1
161
+
162
+ total = filled + len(empty)
163
+ if empty:
164
+ print(f'WARNING: {len(empty)}/{total} fields empty: {empty}')
165
+ else:
166
+ print(f'All {total} fields verified')
167
+ doc.close()
168
+ ```
169
+
170
+ ## Step 5: Flatten (Optional — Lock Fields)
171
+
172
+ ```python
173
+ import fitz
174
+
175
+ doc = fitz.open('form-filled.pdf')
176
+
177
+ for page in doc:
178
+ for widget in list(page.widgets()):
179
+ rect = widget.rect
180
+ value = widget.field_value or ''
181
+ if value and value != 'Off':
182
+ page.insert_text(
183
+ fitz.Point(rect.x0 + 2, rect.y1 - 2),
184
+ value, fontsize=10, fontname='helv',
185
+ )
186
+ page.clean_contents()
187
+
188
+ doc.save('form-final.pdf', garbage=4, deflate=True)
189
+ doc.close()
190
+ ```
191
+
192
+ ---
193
+
194
+ ## Fallback: Scanned / Non-Interactive Forms
195
+
196
+ If the PDF has no AcroForm fields, overlay text at specific coordinates:
197
+
198
+ ```python
199
+ import fitz
200
+
201
+ doc = fitz.open('scanned-form.pdf')
202
+ page = doc[0]
203
+
204
+ # 1. Render as image to identify field locations
205
+ pix = page.get_pixmap(dpi=150)
206
+ pix.save('form-preview.png')
207
+
208
+ # 2. Overlay text at identified positions (coordinates in PDF points, 72/inch)
209
+ fields = [
210
+ (fitz.Point(150, 245), 'John A. Smith'),
211
+ (fitz.Point(150, 290), '03/15/1985'),
212
+ (fitz.Point(150, 335), '123 Main St, Dallas, TX 75201'),
213
+ ]
214
+
215
+ for point, text in fields:
216
+ page.insert_text(point, text, fontsize=11, fontname='helv', color=(0, 0, 0))
217
+
218
+ doc.save('scanned-filled.pdf')
219
+ doc.close()
220
+ ```
221
+
222
+ ---
223
+
224
+ ## Field Type Reference
225
+
226
+ | Type ID | Type | Fill Pattern | Notes |
227
+ |---------|------|-------------|-------|
228
+ | 2 | Checkbox | `'Yes'` / `'Off'` | Some PDFs use custom on_state values |
229
+ | 3 | Radio | Option label text | Set to the option's export value |
230
+ | 4 | Listbox | Option value | Must match one of `choice_values` |
231
+ | 5 | Combobox | Option value or free text | Depends on field flags |
232
+ | 6 | Signature | `/s/ Name` | Accepts text for typed signatures |
233
+ | 7 | Text | Any string | Set `text_fontsize=0` for auto-fit |
234
+
235
+ ## Tips
236
+
237
+ - Always inventory fields first — present to user before filling
238
+ - Watch for duplicate field names — use index-based filling when names collide
239
+ - `text_fontsize = 0` tells PyMuPDF to auto-scale text to fit the field rect
240
+ - **Always set NeedAppearances=false** — this is the #1 cause of blank fields
241
+ - Signature fields (type 6) accept typed text like `/s/ Full Name` for e-signatures
@@ -0,0 +1,90 @@
1
+ ---
2
+ name: pptx
3
+ description: >
4
+ Create, read, and edit PowerPoint presentations (.pptx). Use whenever the
5
+ deliverable is a slide deck — building presentations from content or data,
6
+ editing existing decks, extracting slide text, or deck-to-PDF conversion. Do
7
+ not trigger when the requested output is a document or web page.
8
+ metadata:
9
+ short-description: "Create, read, and edit PowerPoint (.pptx) decks"
10
+ author: "nexus-cortex"
11
+ ---
12
+
13
+ # PPTX — Presentations
14
+
15
+ Build and edit .pptx decks with open-source tooling. Decks are a LAYOUT medium:
16
+ the most common failure isn't broken files, it's unreadable slides — too much
17
+ text, overflowing frames, invisible contrast. Design for the back of the room.
18
+
19
+ ## Tooling (pick by job)
20
+
21
+ | Job | Tool | Notes |
22
+ |-----|------|-------|
23
+ | Create / edit programmatically | `python-pptx` | Slides, layouts, placeholders, text frames, images, tables, charts, notes |
24
+ | Markdown → deck quickly | `pandoc` | `pandoc slides.md -o deck.pptx` (`---`-separated slides; `--reference-doc` for branding) |
25
+ | Extract slide text | `python-pptx` walk | Iterate slides → shapes → `text_frame` |
26
+ | pptx → PDF | LibreOffice headless | `soffice --headless --convert-to pdf deck.pptx --outdir out/` |
27
+
28
+ Install on demand: `pip install python-pptx`.
29
+
30
+ ## Core patterns (python-pptx)
31
+
32
+ ```python
33
+ from pptx import Presentation
34
+ from pptx.util import Inches, Pt, Emu
35
+ from pptx.dml.color import RGBColor
36
+
37
+ prs = Presentation() # or Presentation("existing.pptx")
38
+ prs.slide_width = Inches(13.333) # 16:9 — set BEFORE adding slides
39
+ prs.slide_height = Inches(7.5)
40
+
41
+ title_slide = prs.slides.add_slide(prs.slide_layouts[0]) # 0=title, 1=title+content
42
+ title_slide.shapes.title.text = "Q3 Results"
43
+ title_slide.placeholders[1].text = "Engineering review — 2026"
44
+
45
+ slide = prs.slides.add_slide(prs.slide_layouts[1])
46
+ slide.shapes.title.text = "Highlights"
47
+ body = slide.placeholders[1].text_frame
48
+ body.text = "Latency down 40%" # first bullet
49
+ p = body.add_paragraph(); p.text = "Cost per request halved"; p.level = 1
50
+
51
+ slide.shapes.add_picture("chart.png", Inches(7), Inches(1.5), width=Inches(5.5))
52
+ slide.notes_slide.notes_text_frame.text = "Mention the cache work here."
53
+ prs.save("deck.pptx")
54
+ ```
55
+
56
+ Editing an existing deck: iterate `prs.slides` → `slide.shapes`; only shapes
57
+ with `shape.has_text_frame` carry text. Edit at the run level
58
+ (`text_frame.paragraphs[i].runs[j].text`) to preserve formatting. To match the
59
+ deck's branding, ALWAYS build new slides from `prs.slide_layouts` of the same
60
+ file rather than a fresh `Presentation()`.
61
+
62
+ ## Slide design rules (what makes decks fail review)
63
+
64
+ - **One idea per slide; ≤ 6 bullets; ≤ 10 words per bullet.** Prose belongs in
65
+ the speaker notes, not the slide.
66
+ - **Minimum 18pt body text** (titles 28pt+). If content doesn't fit at 18pt,
67
+ split the slide — never shrink the font to fit.
68
+ - **Check contrast** — light text needs a dark fill behind it; never place text
69
+ straight onto a busy image without a scrim shape.
70
+ - **Charts as images** (matplotlib → PNG → `add_picture`) are more reliable than
71
+ native chart XML for complex visuals; use native `pptx.chart` only for simple
72
+ bar/line/pie that must stay editable.
73
+ - Position with explicit `Inches()` — overlapping autolayout shapes are the #1
74
+ source of "looks broken" decks.
75
+
76
+ ## Verification (mandatory)
77
+
78
+ 1. **Re-open** with `Presentation("deck.pptx")` — corruption throws.
79
+ 2. **Assert structure**: slide count, expected titles, image/shape presence.
80
+ 3. **Render-check when layout matters**: convert to PDF via LibreOffice and
81
+ inspect the pages (text overflow and overlap are invisible in the XML — only
82
+ a render shows them).
83
+
84
+ ## Limits to know
85
+
86
+ - SmartArt, animations, and transitions are not supported by `python-pptx` —
87
+ preserved if present, but not creatable/editable. Say so; don't fake it.
88
+ - Embedded video/audio: insert as a linked file or warn — round-trip is fragile.
89
+ - Fonts must exist on the rendering machine; stick to widely-available families
90
+ (Calibri, Arial, Helvetica) unless the user supplies brand fonts.
@@ -0,0 +1,373 @@
1
+ ---
2
+ name: resume-analyst
3
+ description: Analyze, improve, and create professional resumes and CVs. Use when the user needs help with resume review, ATS optimization, content improvement, or creating a new resume from scratch.
4
+ allowed-tools: Read, Write, Grep, Glob
5
+ ---
6
+
7
+ # Resume & CV Analyst
8
+
9
+ A comprehensive skill for analyzing, improving, and creating professional resumes and CVs with ATS (Applicant Tracking System) optimization.
10
+
11
+ ## When to Use This Skill
12
+
13
+ - User wants to review or improve an existing resume
14
+ - User needs help creating a new resume
15
+ - User asks for ATS optimization advice
16
+ - User wants feedback on resume structure or content
17
+ - User needs to tailor a resume for a specific job posting
18
+
19
+ ## Instructions
20
+
21
+ ### Phase 1: Analysis (Existing Resume)
22
+
23
+ If the user has an existing resume:
24
+
25
+ 1. **Locate the Resume File**
26
+ - Use Glob to find resume files: `*.pdf`, `*.docx`, `*.txt`, `resume.*`, `cv.*`
27
+ - Common locations: current directory, `~/Documents/`, `~/Desktop/`
28
+ - Ask user for file location if not found
29
+
30
+ 2. **Read and Parse Content**
31
+ - Use Read tool to access the file
32
+ - For PDF: Use Bash with `pdftotext` or `strings` if needed
33
+ - For Word: Use Bash with `antiword` or `docx2txt` if available
34
+ - Extract all text content for analysis
35
+
36
+ 3. **Analyze Resume Structure**
37
+ Check for these essential sections:
38
+ - ✅ Contact Information (name, email, phone, location, LinkedIn/portfolio)
39
+ - ✅ Professional Summary/Objective
40
+ - ✅ Work Experience (with dates, company, role, achievements)
41
+ - ✅ Education (degree, institution, graduation date)
42
+ - ✅ Skills (technical and soft skills)
43
+ - ✅ Optional: Certifications, Projects, Publications, Awards
44
+
45
+ 4. **ATS Optimization Check**
46
+ Evaluate for ATS compatibility:
47
+ - ❌ **Avoid**: Graphics, tables, columns, headers/footers, text boxes, images
48
+ - ✅ **Use**: Simple formatting, standard fonts (Arial, Calibri, Times New Roman)
49
+ - ✅ **Include**: Keywords from job description
50
+ - ✅ **Format**: Standard section headings, consistent date formats
51
+ - ✅ **File Type**: .docx or .txt preferred over PDF for ATS
52
+
53
+ 5. **Content Quality Assessment**
54
+ Evaluate each work experience entry:
55
+ - **Achievement-Focused**: Quantifiable results (increased X by Y%, managed $Z budget)
56
+ - **Action Verbs**: Strong verbs (Led, Implemented, Optimized, not "Responsible for")
57
+ - **STAR Format**: Situation, Task, Action, Result
58
+ - **Relevance**: Aligned with target role
59
+ - **Clarity**: Clear, concise bullet points (1-2 lines each)
60
+
61
+ ### Phase 2: Feedback & Recommendations
62
+
63
+ Provide structured feedback:
64
+
65
+ 1. **Overall Assessment** (1-10 score with rationale)
66
+ - ATS Compatibility: __/10
67
+ - Content Quality: __/10
68
+ - Structure & Format: __/10
69
+ - Professional Impact: __/10
70
+
71
+ 2. **Critical Issues** (Must Fix)
72
+ - Missing essential sections
73
+ - ATS-incompatible formatting
74
+ - Lack of quantifiable achievements
75
+ - Typos or grammatical errors
76
+ - Outdated or irrelevant content
77
+
78
+ 3. **Improvement Opportunities** (Should Fix)
79
+ - Weak action verbs
80
+ - Vague descriptions
81
+ - Missing keywords
82
+ - Inconsistent formatting
83
+ - Poor space utilization
84
+
85
+ 4. **Enhancement Suggestions** (Nice to Have)
86
+ - Additional relevant skills
87
+ - Project showcases
88
+ - Leadership examples
89
+ - Industry certifications
90
+
91
+ ### Phase 3: Content Improvement
92
+
93
+ For each work experience entry, suggest improved versions:
94
+
95
+ **Before**:
96
+ ```
97
+ Responsible for managing team projects and coordinating with clients.
98
+ ```
99
+
100
+ **After**:
101
+ ```
102
+ • Led cross-functional team of 8 engineers to deliver 15+ client projects on time, achieving 95% customer satisfaction
103
+ • Coordinated with 20+ enterprise clients, resulting in $2M+ annual contract renewals
104
+ ```
105
+
106
+ **Guidelines for Improvements**:
107
+ - Start with strong action verbs
108
+ - Include specific numbers and metrics
109
+ - Show impact and results
110
+ - Use industry-standard terminology
111
+ - Keep bullet points concise (1-2 lines)
112
+
113
+ ### Phase 4: Resume Generation (New Resume)
114
+
115
+ If creating a new resume from scratch:
116
+
117
+ 1. **Gather Information**
118
+ Ask the user for:
119
+ - Personal details (name, contact, location)
120
+ - Target role and industry
121
+ - Work history (companies, dates, responsibilities, achievements)
122
+ - Education background
123
+ - Skills and certifications
124
+ - Notable projects or accomplishments
125
+
126
+ 2. **Choose Format**
127
+ - **Chronological**: Best for steady career progression
128
+ - **Functional**: Best for career changers or gaps
129
+ - **Combination**: Best for experienced professionals
130
+
131
+ 3. **Generate Resume Content**
132
+ Use this structure:
133
+
134
+ ```
135
+ [FULL NAME]
136
+ [Email] | [Phone] | [City, State] | [LinkedIn URL] | [Portfolio/GitHub]
137
+
138
+ PROFESSIONAL SUMMARY
139
+ [2-3 sentences highlighting years of experience, key expertise, and value proposition]
140
+
141
+ PROFESSIONAL EXPERIENCE
142
+
143
+ [Company Name] | [Location]
144
+ [Job Title] | [Month Year] - [Month Year]
145
+ • [Achievement-focused bullet point with metrics]
146
+ • [Achievement-focused bullet point with metrics]
147
+ • [Achievement-focused bullet point with metrics]
148
+
149
+ [Repeat for each role]
150
+
151
+ EDUCATION
152
+
153
+ [Degree] in [Field] | [University Name] | [Graduation Year]
154
+ • [Honors, GPA if >3.5, relevant coursework]
155
+
156
+ SKILLS
157
+
158
+ Technical: [List of relevant technical skills]
159
+ Tools: [List of relevant tools and platforms]
160
+ Soft Skills: [List of relevant soft skills]
161
+
162
+ CERTIFICATIONS (if applicable)
163
+ • [Certification Name], [Issuing Organization], [Year]
164
+ ```
165
+
166
+ 4. **Write to File**
167
+ - Save as `resume_[name]_[date].txt` or `.md`
168
+ - Use Write tool to create the file
169
+ - Inform user they can convert to PDF/Word as needed
170
+
171
+ ### Phase 5: Job-Specific Tailoring
172
+
173
+ If user has a specific job posting:
174
+
175
+ 1. **Extract Job Requirements**
176
+ - Read job description
177
+ - Identify required skills, experience, qualifications
178
+ - Note key terminology and phrases
179
+ - Identify company values and culture
180
+
181
+ 2. **Match Resume Content**
182
+ - Highlight relevant experience
183
+ - Incorporate job-specific keywords
184
+ - Reorder bullet points for relevance
185
+ - Add/emphasize matching skills
186
+ - Adjust professional summary
187
+
188
+ 3. **Customize Cover Letter** (if requested)
189
+ - Reference specific job requirements
190
+ - Connect experience to role needs
191
+ - Show cultural fit
192
+ - Include call-to-action
193
+
194
+ ## ATS Optimization Checklist
195
+
196
+ Use this checklist for ATS compatibility:
197
+
198
+ - [ ] Simple, clean formatting (no tables, columns, graphics)
199
+ - [ ] Standard section headings (EXPERIENCE, EDUCATION, SKILLS)
200
+ - [ ] Standard fonts (Arial, Calibri, Times New Roman, 10-12pt)
201
+ - [ ] .docx or .txt file format
202
+ - [ ] No headers/footers (put contact info in body)
203
+ - [ ] No text boxes or images
204
+ - [ ] Keywords from job description included
205
+ - [ ] Consistent date formatting (MM/YYYY or Month YYYY)
206
+ - [ ] Acronyms spelled out first time (e.g., "Search Engine Optimization (SEO)")
207
+ - [ ] Standard bullet points (•, -, or ◦)
208
+ - [ ] File name format: FirstName_LastName_Resume.docx
209
+
210
+ ## Common Issues & Solutions
211
+
212
+ ### Issue: "Responsible for..."
213
+ **Problem**: Passive language that doesn't show impact
214
+ **Solution**: Start with action verbs and add results
215
+ ```
216
+ ❌ Responsible for customer support
217
+ ✅ Resolved 200+ customer inquiries monthly with 98% satisfaction rating
218
+ ```
219
+
220
+ ### Issue: No Metrics
221
+ **Problem**: Vague, unmeasurable claims
222
+ **Solution**: Add specific numbers
223
+ ```
224
+ ❌ Improved team efficiency
225
+ ✅ Improved team efficiency by 35% through process automation, reducing turnaround time from 5 days to 3 days
226
+ ```
227
+
228
+ ### Issue: Too Long or Too Short
229
+ **Problem**: Resume length not appropriate for experience level
230
+ **Solution**:
231
+ - Entry-level (0-5 years): 1 page
232
+ - Mid-level (5-10 years): 1-2 pages
233
+ - Senior-level (10+ years): 2 pages maximum
234
+
235
+ ### Issue: Outdated Skills
236
+ **Problem**: Lists irrelevant or outdated technologies
237
+ **Solution**: Focus on current, in-demand skills for target role
238
+
239
+ ### Issue: Employment Gaps
240
+ **Problem**: Unexplained gaps in work history
241
+ **Solution**:
242
+ - Use years instead of months if gap is small
243
+ - Include relevant activities (freelance, courses, volunteering)
244
+ - Address positively in cover letter if needed
245
+
246
+ ## Industry-Specific Guidance
247
+
248
+ ### Tech/Engineering
249
+ - Emphasize: Technical skills, programming languages, frameworks, projects
250
+ - Include: GitHub/portfolio links, open-source contributions
251
+ - Format: Clean, modern, data-driven
252
+ - Keywords: Agile, CI/CD, APIs, cloud platforms, version control
253
+
254
+ ### Business/Finance
255
+ - Emphasize: Results, revenue impact, cost savings, strategic initiatives
256
+ - Include: Certifications (CPA, CFA, MBA), leadership experience
257
+ - Format: Professional, conservative
258
+ - Keywords: P&L, ROI, stakeholder management, financial modeling
259
+
260
+ ### Creative/Design
261
+ - Emphasize: Portfolio, design process, tools, creative achievements
262
+ - Include: Portfolio link prominently, design awards
263
+ - Format: Can be more creative but still ATS-friendly
264
+ - Keywords: UX/UI, Adobe Creative Suite, design thinking, user research
265
+
266
+ ### Healthcare
267
+ - Emphasize: Certifications, patient care, compliance, specialized skills
268
+ - Include: Licenses, credentials, patient outcomes
269
+ - Format: Professional, detail-oriented
270
+ - Keywords: EMR systems, HIPAA, patient-centered care, clinical protocols
271
+
272
+ ### Marketing/Sales
273
+ - Emphasize: Campaign results, growth metrics, brand awareness, revenue
274
+ - Include: Successful campaigns, client portfolios, certifications
275
+ - Format: Results-driven, dynamic
276
+ - Keywords: ROI, lead generation, conversion rates, digital marketing, CRM
277
+
278
+ ## Examples
279
+
280
+ ### Example 1: Software Engineer
281
+
282
+ **Before**:
283
+ ```
284
+ Software Developer at TechCorp (2020-2023)
285
+ - Wrote code for various projects
286
+ - Fixed bugs
287
+ - Worked with team members
288
+ ```
289
+
290
+ **After**:
291
+ ```
292
+ Software Engineer | TechCorp | San Francisco, CA | Jan 2020 - Dec 2023
293
+ • Architected and deployed 12+ microservices handling 10M+ daily requests with 99.9% uptime
294
+ • Reduced application load time by 40% through code optimization and caching strategies
295
+ • Mentored 5 junior developers, conducting code reviews and technical workshops
296
+ • Technologies: Python, Django, PostgreSQL, Redis, AWS, Docker, Kubernetes
297
+ ```
298
+
299
+ ### Example 2: Marketing Manager
300
+
301
+ **Before**:
302
+ ```
303
+ Marketing Manager at StartupXYZ (2019-2023)
304
+ - Managed marketing campaigns
305
+ - Worked on social media
306
+ - Helped increase brand awareness
307
+ ```
308
+
309
+ **After**:
310
+ ```
311
+ Marketing Manager | StartupXYZ | Austin, TX | Mar 2019 - Present
312
+ • Drove 250% increase in qualified leads through multi-channel campaigns, generating $5M in pipeline
313
+ • Managed $500K annual marketing budget, optimizing spend to achieve 35% reduction in CAC
314
+ • Built marketing team from 2 to 8 members, establishing processes and campaign frameworks
315
+ • Increased social media engagement by 180% across LinkedIn, Twitter, and Facebook platforms
316
+ ```
317
+
318
+ ### Example 3: Project Manager
319
+
320
+ **Before**:
321
+ ```
322
+ Project Manager at ConsultCo (2018-2023)
323
+ - Managed client projects
324
+ - Coordinated with teams
325
+ - Delivered projects on time
326
+ ```
327
+
328
+ **After**:
329
+ ```
330
+ Senior Project Manager | ConsultCo | Chicago, IL | Jun 2018 - Aug 2023
331
+ • Led 25+ enterprise consulting engagements ($100K-$2M each) for Fortune 500 clients with 100% on-time delivery
332
+ • Managed cross-functional teams of 15+ consultants across 3 time zones, delivering complex digital transformation projects
333
+ • Improved client satisfaction scores from 7.2 to 9.1/10 through proactive communication and risk management
334
+ • Achieved 98% project profitability rate by implementing agile methodologies and resource optimization
335
+ ```
336
+
337
+ ## Key Reminders
338
+
339
+ 1. **Quantify Everything**: Numbers, percentages, dollar amounts, timeframes
340
+ 2. **Be Specific**: Replace vague terms with concrete examples
341
+ 3. **Show Impact**: Focus on results, not just responsibilities
342
+ 4. **Use Keywords**: Match language from job descriptions
343
+ 5. **Keep it Current**: Remove outdated skills and old experiences (>10-15 years)
344
+ 6. **Proofread Thoroughly**: No typos, consistent formatting, proper grammar
345
+ 7. **Optimize for ATS**: Simple format, standard headings, keyword-rich
346
+ 8. **Tell a Story**: Show career progression and growth
347
+ 9. **Be Honest**: Never fabricate experience or qualifications
348
+ 10. **Keep it Concise**: Every word should add value
349
+
350
+ ## Resources to Reference
351
+
352
+ - **Action Verbs List**: Achieved, Accelerated, Accomplished, Administered, Analyzed, Architected, Built, Championed, Collaborated, Coordinated, Created, Delivered, Demonstrated, Designed, Developed, Drove, Enhanced, Established, Exceeded, Executed, Expanded, Generated, Implemented, Improved, Increased, Initiated, Launched, Led, Managed, Maximized, Optimized, Orchestrated, Organized, Pioneered, Reduced, Resolved, Spearheaded, Streamlined, Strengthened, Transformed
353
+
354
+ - **Metrics to Include**:
355
+ - Percentages (increased by X%)
356
+ - Dollar amounts ($X revenue, $Y budget)
357
+ - Time saved (reduced from X to Y)
358
+ - Team size (managed X people)
359
+ - Customer/user counts (served X customers)
360
+ - Project counts (delivered X projects)
361
+ - Quality metrics (98% satisfaction, 99.9% uptime)
362
+
363
+ ---
364
+
365
+ ## Final Output Format
366
+
367
+ Always provide:
368
+ 1. **Analysis Summary** (if reviewing existing resume)
369
+ 2. **Scored Assessment** (ATS, Content, Structure, Impact)
370
+ 3. **Prioritized Recommendations** (Critical, Important, Enhancement)
371
+ 4. **Specific Improvements** (before/after examples)
372
+ 5. **Updated Resume Draft** (if requested)
373
+ 6. **Next Steps** (actions user should take)