5.6 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, must_haves
| phase | plan | type | wave | depends_on | files_modified | autonomous | requirements | must_haves | |||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 01-cleanup-fixes | 01 | execute | 1 |
|
true |
|
|
Purpose: Eliminate config conflicts and data integrity issues that affect SEO and build reproducibility. Output: Clean package.json, no static sitemap, consistent site data.
<execution_context> @$HOME/.claude/get-shit-done/workflows/execute-plan.md @$HOME/.claude/get-shit-done/templates/summary.md </execution_context>
@.planning/ROADMAP.md @.planning/STATE.md @.planning/research/PITFALLS.md Task 1: Delete static sitemap and pin dependency versions public/sitemap.xml, package.json public/sitemap.xml, package.json 1. Delete `public/sitemap.xml` entirely. This static file overrides the `@nuxtjs/sitemap` module dynamic route. Nitro serves `public/` files before server routes, so the module handler at `/sitemap.xml` is never reached while this file exists.- In
package.json, replace the two dangerous"latest"specs:- Change
"vue": "latest"to"vue": "^3.5.0" - Change
"vue-router": "latest"to"vue-router": "^4.5.0"
- Change
Do NOT run pnpm install -- just update the version specs. The lockfile already has correct resolved versions.
bash -c "test ! -f public/sitemap.xml && echo 'sitemap deleted' || echo 'FAIL: sitemap exists'" && grep -c '"latest"' package.json | grep -q '^0$' && echo "no latest found" || echo "FAIL: latest still in package.json"
<acceptance_criteria>
public/sitemap.xmldoes not existgrep '"latest"' package.jsonreturns zero matchesgrep '"vue": "\\^3.5.0"' package.jsonreturns a matchgrep '"vue-router": "\\^4.5.0"' package.jsonreturns a match </acceptance_criteria> Static sitemap removed, vue and vue-router pinned to caret ranges
-
reviewCount mismatch: On line ~99, change
reviewCount: '50'toreviewCount: '10'. The testimonials.ts file hastotalReviews: 10-- these must match. Google penalises inflated aggregateRating claims in structured data. -
Fiverr placeholder URLs: On lines ~61 and ~67, two services have
url: '#':id: 'telegram-bot'(line ~61): changeurl: '#'tourl: 'https://www.fiverr.com/users/mr_kayjaydee'(link to profile since no dedicated gig page exists)id: 'website-development'(line ~67): changeurl: '#'tourl: 'https://www.fiverr.com/users/mr_kayjaydee'(same fallback)
These are the Fiverr profile URL already defined at fiverr.profileUrl in the same file.
bash -c "grep -q "reviewCount: '10'" app/data/site.ts && echo 'reviewCount OK' || echo 'FAIL: reviewCount'" && bash -c "grep -c "url: '#'" app/data/site.ts | grep -q '^0$' && echo 'no placeholder URLs' || echo 'FAIL: placeholder URLs remain'"
<acceptance_criteria>
grep "reviewCount: '10'" app/data/site.tsreturns a matchgrep "reviewCount: '50'" app/data/site.tsreturns zero matchesgrep "url: '#'" app/data/site.tsreturns zero matches- Both telegram-bot and website-development services have
url: 'https://www.fiverr.com/users/mr_kayjaydee'</acceptance_criteria> reviewCount matches totalReviews (10), Fiverr placeholder URLs replaced with profile URL
<threat_model>
Trust Boundaries
| Boundary | Description |
|---|---|
| Static assets vs server routes | public/ files override Nitro server handlers |
STRIDE Threat Register
| Threat ID | Category | Component | Disposition | Mitigation Plan |
|---|---|---|---|---|
| T-01-01 | Information Disclosure | aggregateRating JSON-LD | mitigate | Set reviewCount to actual value (10) to avoid Google penalty for inflated claims |
| T-01-02 | Tampering | package.json "latest" | mitigate | Pin to caret ranges to prevent unvetted major version upgrades |
| </threat_model> |
<success_criteria> Static sitemap removed, deps pinned, site data consistent with testimonials data. </success_criteria>
After completion, create `.planning/phases/01-cleanup-fixes/01-01-SUMMARY.md`