feat(client): merge Skills into Experience as a tab (#311) #312

Merged
james merged 1 commit from experience-skills-tab into main 2026-06-27 01:27:24 +00:00
Owner

Closes #311.

Moves Skills under the Experience screen as a tab and sets the tab
order to Jobs · Contracts · Education · Skills (default: Jobs).

Changes

  • Extract the Skills screen body into
    apps/client/lib/experience/SkillsSection.tsx, which takes Experience's
    page-level editing flag as a prop. The old standalone page chrome (title +
    Edit/Done toggle) is dropped — the Experience screen provides it. All the
    section/skill CRUD, reorder, collapse, and add-section/add-skill behaviour is
    unchanged.
  • Render SkillsSection as the new "Skills" tab in
    app/(app)/experience.tsx and reorder the segmented control to
    Jobs · Contracts · Education · Skills; default tab is now Jobs.
  • Remove the /skills sidebar nav item and its Sparkles icon binding;
    delete the app/(app)/skills.tsx route (git tracks it as a rename into the
    extracted component).
  • i18n (packages/i18n/messages/en.json): add experience.tabs.skills,
    refresh experience.lede, drop the now-dead nav.skills label. The existing
    skills.* section copy is reused unchanged by the tab.
  • Tests: update navItems.test.ts for the new link set and grouping.

Verification

apps/client typecheck, eslint, and vitest all clean — 131 tests pass (20
files), including the updated navItems.test.ts. en.json validated as
well-formed. No locale-parity gate exists (sibling locales are already partial
and fall back to English per-key).

Manual check worth doing on device/web: Experience opens on the Jobs tab; the
four tabs read Jobs · Contracts · Education · Skills; Skills edit/add/reorder
works under the shared Edit toggle; the sidebar no longer shows a Skills entry.

🤖 Generated with Claude Code

Closes #311. Moves **Skills** under the **Experience** screen as a tab and sets the tab order to **Jobs · Contracts · Education · Skills** (default: Jobs). ## Changes - **Extract** the Skills screen body into `apps/client/lib/experience/SkillsSection.tsx`, which takes Experience's page-level `editing` flag as a prop. The old standalone page chrome (title + Edit/Done toggle) is dropped — the Experience screen provides it. All the section/skill CRUD, reorder, collapse, and add-section/add-skill behaviour is unchanged. - **Render** `SkillsSection` as the new "Skills" tab in `app/(app)/experience.tsx` and reorder the segmented control to Jobs · Contracts · Education · Skills; default tab is now Jobs. - **Remove** the `/skills` sidebar nav item and its `Sparkles` icon binding; delete the `app/(app)/skills.tsx` route (git tracks it as a rename into the extracted component). - **i18n** (`packages/i18n/messages/en.json`): add `experience.tabs.skills`, refresh `experience.lede`, drop the now-dead `nav.skills` label. The existing `skills.*` section copy is reused unchanged by the tab. - **Tests**: update `navItems.test.ts` for the new link set and grouping. ## Verification `apps/client` typecheck, eslint, and vitest all clean — **131 tests pass** (20 files), including the updated `navItems.test.ts`. `en.json` validated as well-formed. No locale-parity gate exists (sibling locales are already partial and fall back to English per-key). Manual check worth doing on device/web: Experience opens on the Jobs tab; the four tabs read Jobs · Contracts · Education · Skills; Skills edit/add/reorder works under the shared Edit toggle; the sidebar no longer shows a Skills entry. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(client): merge Skills into Experience as a tab
All checks were successful
Commits / Conventional Commits (pull_request) Successful in 8s
PR / OSV-Scanner (pull_request) Successful in 1m27s
PR / pnpm audit (pull_request) Successful in 2m21s
PR / Static analysis (pull_request) Successful in 2m23s
PR / Client (web export smoke) (pull_request) Successful in 2m31s
PR / Typecheck (pull_request) Successful in 2m36s
PR / Lint (pull_request) Successful in 2m45s
PR / OpenAPI (pull_request) Successful in 2m51s
PR / Package age policy (soft) (pull_request) Successful in 38s
Secrets / gitleaks (pull_request) Successful in 28s
PR / Test (sqlite) (pull_request) Successful in 3m34s
PR / Test (postgres) (pull_request) Successful in 3m43s
PR / Trivy (image) (pull_request) Successful in 2m14s
PR / Build (pull_request) Successful in 3m59s
PR / Coverage (soft) (pull_request) Successful in 2m30s
ca66636091
Skills was a standalone /skills screen and nav item. Move it under
Experience as a tab, and set the Experience tab order to
Jobs · Contracts · Education · Skills (default: Jobs).

- Extract the Skills body into lib/experience/SkillsSection.tsx, which
  takes the page-level `editing` flag from Experience. The old
  standalone page chrome (title + Edit/Done toggle) is dropped — the
  Experience screen provides it.
- Render SkillsSection as the new "Skills" tab in experience.tsx and
  reorder the segmented control.
- Remove the /skills sidebar nav item and icon binding; delete the
  app/(app)/skills.tsx route.
- i18n: add experience.tabs.skills, refresh experience.lede, drop the
  now-dead nav.skills label. The existing skills.* section copy is
  reused unchanged by the tab.
- Update navItems.test.ts for the new link set and grouping.

Closes #311

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

📊 Test coverage

Patch coverage: no testable lines changed.

Overall (app/, lib/, db/, excluding UI per ADR-0019):

Metric Value Soft target
Lines 81.6% ≥ 50%
Branches 72.8% ⚠️ ≥ 75%
Functions 91.1% informational

Soft thresholds per ADR-0019. Coverage is informational and does not block merge.

<!-- coverage-comment --> ## 📊 Test coverage **Patch coverage:** no testable lines changed. **Overall** (`app/`, `lib/`, `db/`, excluding UI per ADR-0019): | Metric | Value | Soft target | |---|---|---| | Lines | 81.6% ✅ | ≥ 50% | | Branches | 72.8% ⚠️ | ≥ 75% | | Functions | 91.1% | informational | Soft thresholds per [ADR-0019](docs/adr/0019-coverage-soft-targets.md). Coverage is informational and does not block merge.
james merged commit ff07e04dfb into main 2026-06-27 01:27:24 +00:00
james deleted branch experience-skills-tab 2026-06-27 01:27:25 +00:00
Sign in to join this conversation.
No description provided.