poooi/poi/fcd-assets
- community
Checking that the SKILL.md file is still in the repository.
Regenerating fcd data, in particular ship-avatar marginMagic values via fcd/gen-shipavatar.js. Use when editing anything under fcd/, when asked to regenerate or fix ship avatar crops, or when ship portraits in the fleet view are framed wrongly.
Install
npx vskill@latest install poooi/poi/fcd-assetsSKILL.md
fcd Assets — Ship Avatar Generation
fcd/gen-shipavatar.js generates the marginMagic values in fcd/shipavatar.json, which control how each ship's remodel art is cropped into an avatar.
Two methods — use banner
--method banner (the default) substantially outperforms --method face:
- banner: the game's 160x40
bannerart is the game's _own_ face-framed crop of the remodel
art. The script registers banner -> remodel via ORB keypoints + RANSAC (scale + translation, no rotation); marginMagic is then linear in the transform (tx, s), and the two-feature least-squares fit implicitly finds the anchor (~x = 101px in the banner). Full run: R^2 = 0.82, MAE = 0.059, 4 failures out of 1724.
The banner frame is removed by a cross-banner pixel-identity mask: background pixels are byte-identical across banners of the same stype, so >= 4 matches within +-2 marks background; the pool falls back to all banners for stypes < 6. Note that banner character scale varies per ship (2.15x–2.98x), so plain template matching fails; whole-banner matching also fails, because the banner band covers more vertical content than the remodel strip.
- face: lbpcascade_animeface. Pad 48px first (faces touch the strip edges) and do not
use equalizeHist (the transparent-black background kills it). R^2 = 0.67, MAE = 0.073, 253 failures, with catastrophic outliers.
Workflow
The api_start2 capture comes from the response-saver — see the redux-api-testing skill.
Review the results in fcd/.cache/review.html before using --write. fcd/report-diff.js produces a before/after comparison against git HEAD with visual crops in fcd/.cache/diff-report.html.
Visual spot-check trick: bitblt the source-space window crop (x = m * 80 / (83/182), w ~ 325) out of the remodel PNG and view it.
Calibration warning
The fit is calibrated against the _current_ fcd/shipavatar.json. Once machine-generated values are committed, that ground truth is polluted — if you recalibrate, fit against a hand-tuned revision instead:
Environment notes
- CDN: the legacy IP
203.104.209.71is dead — usew01y.kancolle-server.com. - Remodel art is 998x182; the 182 matches
avatar.tsx's(height / 176) * 182. - devDeps:
opencv-wasm(has ORB / BFMatcher / CascadeClassifier but no
estimateAffinePartial2D, hence the hand-rolled RANSAC) and pngjs.
History
Applied 2026-07-24 with overwrite-all + banner method: 862 entries (up from 465), build version 2026/07/24/03. Both methods independently flagged the same hand-tuned values as wrong (Ooshio 0.877 -> 0.65, Michishio, Akatsuki Kai, Kongo 0.335 -> 0.541, Shiratsuyu Kai); visual crop checks confirmed the machine values were correct, so nothing was reverted.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/fcd-assets/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/poooi/poi/fcd-assets)