#128 by GitHub stars
tw93/Kami
👩<U+200D>🚒 Good content deserves good paper. Layout rules and templates that let AI agents export PDF, PNG and editable PowerPoint.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
plugins/kami/skills/kami/SKILL.md
Week of Nov 2, 2026 · +7 / −3 lines
Before Network or broad shell → After Network or broad shell
46f3d49d0015 → 588a727e1f11
- 3 description: 'Typeset professional documents with Kami templates: resumes, one-pagers, white papers, letters, portfolios, and slide decks. Use when asked to 做 PDF / 排版 / 简历 / 一页纸 / PPT / slides, or to create a Kami landing page. Not for auditing or restyling an existing product site.'
+ 3 description: 'Typeset professional documents with Kami templates: resumes, one-pagers, white papers, letters, portfolios, slide decks, and social media cards. Use when asked to 做 PDF / 排版 / 简历 / 一页纸 / PPT / slides / 小红书配图, or to create a Kami landing page. Not for auditing or restyling an existing product site.'
- 33 | Standalone generated illustration, cover, social card, or redraw | **Generated asset** | Lock the semantic brief before pixels (`references/diagrams.md` section 11); preserve accepted parts across iterations |
+ 33 | Standalone generated illustration, cover, or redraw | **Generated asset** | Lock the semantic brief before pixels (`references/diagrams.md` section 11); preserve accepted parts across iterations |
+ 62 | "小红书配图 / 社交卡片 / X 配图 / 推特图 / social cards / carousel" | Social Cards | `social-cards.html` | `social-cards-en.html` | `social-cards-ko.html` |
+ 77 | A set of 3:4 images for a social feed, one point per image | social-cards |
+ 86 - **Social cards**: one `<section class="card">` per 1242x1660 image and one paper for the set, set on `<body>` (`references/design.md` Section 13). The cover headline is the post title and the cover carries a real photo or screenshot; the author's text stays as written, and a short last line is fixed with layout, not by rewording. `--deliver` writes each card at its pixel size.
+ 135 | Social cards | + `references/design.md` section 13 «Social Cards» |
- 168 It checks the HTML (placeholders, strict math rendered in place, Markdown residue, generated charts against their data, template style, content coverage), renders the PDF next to it, then checks the PDF (page contract, resume balance, the font that actually drew CJK text, residue, density, orphans) and exports page images. `WARN` lines point at where to look, not at failures. `GAP` lines are the `[DATA NEEDED]` markers you must report.
+ 172 It checks the HTML (placeholders, strict math rendered in place, Markdown residue, generated charts against their data, template style, content coverage), renders the PDF next to it, then checks the PDF (page contract, resume balance, the font that actually drew CJK text, residue, density, orphans; for social cards one page per card, card fit and card orphans) and exports page images. `WARN` lines point at where to look, not at failures. `GAP` lines are the `[DATA NEEDED]` markers you must report.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 46f3d49d0015
No earlier version was observed for comparison.
skills/kami/SKILL.md
Week of Nov 2, 2026 · +7 / −3 lines
Before Network or broad shell → After Network or broad shell
46f3d49d0015 → 588a727e1f11
- 3 description: 'Typeset professional documents with Kami templates: resumes, one-pagers, white papers, letters, portfolios, and slide decks. Use when asked to 做 PDF / 排版 / 简历 / 一页纸 / PPT / slides, or to create a Kami landing page. Not for auditing or restyling an existing product site.'
+ 3 description: 'Typeset professional documents with Kami templates: resumes, one-pagers, white papers, letters, portfolios, slide decks, and social media cards. Use when asked to 做 PDF / 排版 / 简历 / 一页纸 / PPT / slides / 小红书配图, or to create a Kami landing page. Not for auditing or restyling an existing product site.'
- 33 | Standalone generated illustration, cover, social card, or redraw | **Generated asset** | Lock the semantic brief before pixels (`references/diagrams.md` section 11); preserve accepted parts across iterations |
+ 33 | Standalone generated illustration, cover, or redraw | **Generated asset** | Lock the semantic brief before pixels (`references/diagrams.md` section 11); preserve accepted parts across iterations |
+ 62 | "小红书配图 / 社交卡片 / X 配图 / 推特图 / social cards / carousel" | Social Cards | `social-cards.html` | `social-cards-en.html` | `social-cards-ko.html` |
+ 77 | A set of 3:4 images for a social feed, one point per image | social-cards |
+ 86 - **Social cards**: one `<section class="card">` per 1242x1660 image and one paper for the set, set on `<body>` (`references/design.md` Section 13). The cover headline is the post title and the cover carries a real photo or screenshot; the author's text stays as written, and a short last line is fixed with layout, not by rewording. `--deliver` writes each card at its pixel size.
+ 135 | Social cards | + `references/design.md` section 13 «Social Cards» |
- 168 It checks the HTML (placeholders, strict math rendered in place, Markdown residue, generated charts against their data, template style, content coverage), renders the PDF next to it, then checks the PDF (page contract, resume balance, the font that actually drew CJK text, residue, density, orphans) and exports page images. `WARN` lines point at where to look, not at failures. `GAP` lines are the `[DATA NEEDED]` markers you must report.
+ 172 It checks the HTML (placeholders, strict math rendered in place, Markdown residue, generated charts against their data, template style, content coverage), renders the PDF next to it, then checks the PDF (page contract, resume balance, the font that actually drew CJK text, residue, density, orphans; for social cards one page per card, card fit and card orphans) and exports page images. `WARN` lines point at where to look, not at failures. `GAP` lines are the `[DATA NEEDED]` markers you must report.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 46f3d49d0015
No earlier version was observed for comparison.
Verified commit 588a727e1f11fd911efa166af2aa59416a002268
git clone --filter=blob:none --no-checkout https://github.com/tw93/Kami.git .hotskills/tw93-kami && git -C .hotskills/tw93-kami checkout --detach 588a727e1f11fd911efa166af2aa59416a002268
# Copy each selected skill directory from .hotskills/tw93-kami into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/tw93/Kami.git .hotskills/tw93-kami && git -C .hotskills/tw93-kami checkout --detach 588a727e1f11fd911efa166af2aa59416a002268
# Copy each selected skill directory from .hotskills/tw93-kami into .agents/skills/<skill-name>/Heat
7.5- Star growth, last 7 daysAhead of 87% of tracked repositories
- Star growth, last 24 hoursAhead of 95% of tracked repositories
- Rank movement, last 7 daysAhead of 69% of tracked repositories
- Commits, last 30 daysAhead of 95% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
How it works
kami
When your agent uses it
Typeset professional documents with Kami templates: resumes, one-pagers, white papers, letters, portfolios, slide decks, and social media cards. Use when asked to 做 PDF / 排版 / 简历 / 一页纸 / PPT / slides / 小红书配图, or to create a Kami landing page. Not for auditing or restyling an existing product site.
What it loads into context
Frontmatter
83 tokensAlways available to the agent
SKILL.md
4,944 tokensWhen the skill is activated
Reference documents
79,514 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1 · Lock the contract
- 2 · Sources, materials, and content
- 3 · Read the right amount
- 4 · Fill the template
- 5 · Deliver
- Feedback protocol
- When not to use this skill
Scripts executed separately
assets/templates/slides-en.pyassets/templates/slides.pyscripts/brand_extract.pyscripts/build.pyscripts/chart.pyscripts/check-update.shscripts/checks.pyscripts/content.pyscripts/deliver.pyscripts/diagram_geometry.pyscripts/ensure-fonts.shscripts/ensure_mathjax.shscripts/font_compat.pyscripts/hangul.pyscripts/highlight.pyscripts/html_visibility.pyscripts/lint.pyscripts/math_render.pyscripts/mathjax-runtime/package.jsonscripts/mathjax_svg.jsscripts/mcp_server.pyscripts/mermaid_normalize.pyscripts/optional_deps.pyscripts/package.jsonscripts/render.pyscripts/shared.pyscripts/site_facts.pyscripts/tokens.pyscripts/verify.pyscripts/visual.py
Files
../../../../.claude-plugin/marketplace.jsonasset452 bytes../../.claude-plugin/plugin.jsonasset352 bytesCHEATSHEET.mddoc20,102 bytesLICENSEasset1,061 bytesSKILL.mdcore20,951 bytesSKILL.mdcore20,951 bytesSKILL.mdcore20,951 bytesSKILL.mdcore20,951 bytesSKILL.mdcore20,951 bytesVERSIONasset7 bytesassets/diagrams/architecture-board.htmlasset22,009 bytesassets/diagrams/architecture.htmlasset10,798 bytesassets/diagrams/bar-chart.htmlasset8,025 bytesassets/diagrams/candlestick.htmlasset11,570 bytesassets/diagrams/class.htmlasset9,485 bytesassets/diagrams/donut-chart.htmlasset6,879 bytesassets/diagrams/er.htmlasset10,078 bytesassets/diagrams/flowchart.htmlasset8,983 bytesassets/diagrams/layer-stack.htmlasset8,980 bytesassets/diagrams/line-chart.htmlasset9,877 bytesassets/diagrams/quadrant.htmlasset9,402 bytesassets/diagrams/sequence.htmlasset7,297 bytesassets/diagrams/src/class.mmdasset241 bytesassets/diagrams/src/er.mmdasset121 bytesassets/diagrams/src/sequence.mmdasset184 bytesassets/diagrams/state-machine.htmlasset10,507 bytesassets/diagrams/swimlane.htmlasset9,751 bytesassets/diagrams/timeline.htmlasset8,081 bytesassets/diagrams/tree.htmlasset11,105 bytesassets/diagrams/venn.htmlasset6,644 bytesassets/diagrams/waterfall.htmlasset8,895 bytesassets/fonts/JetBrainsMono.woff2asset55,672 bytesassets/fonts/LICENSE-JetBrainsMono.txtdoc4,399 bytesassets/fonts/LICENSE-SourceHanSerifK.txtdoc5,120 bytesassets/images/logo.svgasset441 bytesassets/templates/changelog-en.htmlasset6,476 bytesassets/templates/changelog-ko.htmlasset7,563 bytesassets/templates/changelog.htmlasset7,029 bytesassets/templates/equity-report-en.htmlasset13,811 bytesassets/templates/equity-report-ko.htmlasset16,020 bytesassets/templates/equity-report.htmlasset15,188 bytesassets/templates/landing-page-en.htmlasset30,411 bytesassets/templates/landing-page-ko.htmlasset30,287 bytesassets/templates/landing-page-llms-full.txt.exampleasset2,450 bytesassets/templates/landing-page-llms.txt.exampleasset1,468 bytesassets/templates/landing-page-robots.txt.exampleasset1,128 bytesassets/templates/landing-page-sitemap.xml.exampleasset2,403 bytesassets/templates/landing-page-vercel.json.exampleasset1,109 bytesassets/templates/landing-page.htmlasset29,190 bytesassets/templates/letter-en.htmlasset7,331 bytesassets/templates/letter-ko.htmlasset8,960 bytesassets/templates/letter.htmlasset8,756 bytesassets/templates/long-doc-en.htmlasset14,766 bytesassets/templates/long-doc-ko.htmlasset16,986 bytesassets/templates/long-doc.htmlasset21,242 bytesassets/templates/marp/slides-marp-en.cssasset4,809 bytesassets/templates/marp/slides-marp-en.mddoc3,272 bytesassets/templates/marp/slides-marp.cssasset5,880 bytesassets/templates/marp/slides-marp.mddoc3,295 bytesassets/templates/one-pager-en.htmlasset11,371 bytesassets/templates/one-pager-ko.htmlasset13,428 bytesassets/templates/one-pager.htmlasset13,136 bytesassets/templates/portfolio-en.htmlasset19,129 bytesassets/templates/portfolio-ko.htmlasset20,522 bytesassets/templates/portfolio.htmlasset24,339 bytesassets/templates/resume-en.htmlasset25,123 bytesassets/templates/resume-ko.htmlasset27,742 bytesassets/templates/resume.htmlasset27,380 bytesassets/templates/slides-en.pyruns13,151 bytesassets/templates/slides-weasy-en.htmlasset7,799 bytesassets/templates/slides-weasy-ko.htmlasset9,426 bytesassets/templates/slides-weasy.htmlasset13,072 bytesassets/templates/slides.pyruns14,240 bytesassets/templates/social-cards-en.htmlasset9,406 bytesassets/templates/social-cards-ko.htmlasset10,023 bytesassets/templates/social-cards.htmlasset10,021 bytesreferences/anti-patterns.mddoc12,947 bytesreferences/brand-profile.mddoc7,439 bytesreferences/brand.example.mddoc2,954 bytesreferences/checks_thresholds.jsonasset546 bytesreferences/deck-preflight.mddoc3,443 bytesreferences/design.mddoc107,077 bytesreferences/diagrams.mddoc45,285 bytesreferences/mermaid-theme.jsonasset1,119 bytesreferences/mermaid.mddoc4,707 bytesreferences/production.mddoc51,236 bytesreferences/resume-writing.mddoc15,948 bytesreferences/schemas/changelog.jsonasset1,714 bytesreferences/schemas/equity-report.jsonasset3,012 bytesreferences/schemas/landing-page.jsonasset6,053 bytesreferences/schemas/letter.jsonasset1,466 bytesreferences/schemas/long-doc.jsonasset2,527 bytesreferences/schemas/one-pager.jsonasset1,592 bytesreferences/schemas/portfolio.jsonasset2,560 bytesreferences/schemas/resume.jsonasset3,459 bytesreferences/schemas/slides.jsonasset2,518 bytesreferences/schemas/social-cards.jsonasset1,960 bytesreferences/social-palettes.jsonasset1,672 bytesreferences/tokens.jsonasset579 bytesreferences/writing.mddoc41,141 bytesscripts/brand_extract.pyruns17,887 bytesscripts/build.pyruns11,104 bytesscripts/chart.pyruns33,844 bytesscripts/check-update.shruns2,894 bytesscripts/checks.pyruns30,202 bytesscripts/content.pyruns28,433 bytesscripts/deliver.pyruns13,973 bytesscripts/diagram_geometry.pyruns8,427 bytesscripts/ensure-fonts.shruns8,899 bytesscripts/ensure_mathjax.shruns4,672 bytesscripts/font_compat.pyruns5,703 bytesscripts/hangul.pyruns4,342 bytesscripts/highlight.pyruns5,678 bytesscripts/html_visibility.pyruns45,738 bytesscripts/lint.pyruns35,195 bytesscripts/math_render.pyruns26,307 bytesscripts/mathjax-runtime/package-lock.jsonasset7,371 bytesscripts/mathjax-runtime/package.jsonruns176 bytesscripts/mathjax_svg.jsruns4,646 bytesscripts/mcp_server.pyruns21,181 bytesscripts/mermaid_normalize.pyruns14,492 bytesscripts/optional_deps.pyruns11,207 bytesscripts/package.jsonruns25 bytesscripts/render.pyruns7,037 bytesscripts/shared.pyruns14,078 bytesscripts/site_facts.pyruns16,739 bytesscripts/tokens.pyruns7,129 bytesscripts/verify.pyruns23,824 bytesscripts/visual.pyruns7,076 bytes
Read SKILL.md
# kami · 紙
**紙 · かみ** means paper in Japanese.
Good content deserves good paper. Use Kami’s templates and layout rules to create documents and landing pages with serif fonts, warm backgrounds, and ink-blue accents.
Part of `Kaku · Waza · Kami` - Kaku writes code, Waza drills habits, **Kami delivers documents**.
Commands and paths below are relative to this skill's directory. Keep the document in the user's working directory and call the scripts from there by their full path (`python3 <skill>/scripts/build.py ...`); relative file arguments resolve from your working directory first.
**Update check (non-blocking).** At the start of a task, run `bash scripts/check-update.sh`. It keeps a local daily marker and, at most once a day, reads Kami's latest published GitHub Release; it uploads no document or task content and stays silent when offline or sandboxed. When it prints a line about a newer Kami, relay it and continue.
**Brand profile.** If `~/.config/kami/brand.md` (or the legacy `~/.kami/brand.md`) exists, read `references/brand-profile.md` and apply it. Precedence: explicit prompt > editorial judgment > habit notes > frontmatter defaults > built-in defaults. The profile fills gaps silently and never overrides the current conversation. When the user names another project as the visual reference, run the style scan in the same file. When they give only a brand website, `python3 scripts/brand_extract.py <url>` drafts a profile; show the draft and use it for this document only after they accept it.
View the complete source on GitHubkami
When your agent uses it
Typeset professional documents with Kami templates: resumes, one-pagers, white papers, letters, portfolios, slide decks, and social media cards. Use when asked to 做 PDF / 排版 / 简历 / 一页纸 / PPT / slides / 小红书配图, or to create a Kami landing page. Not for auditing or restyling an existing product site.
What it loads into context
Frontmatter
83 tokensAlways available to the agent
SKILL.md
4,944 tokensWhen the skill is activated
Reference documents
79,514 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1 · Lock the contract
- 2 · Sources, materials, and content
- 3 · Read the right amount
- 4 · Fill the template
- 5 · Deliver
- Feedback protocol
- When not to use this skill
Scripts executed separately
assets/templates/slides-en.pyassets/templates/slides.pyscripts/brand_extract.pyscripts/build.pyscripts/chart.pyscripts/check-update.shscripts/checks.pyscripts/content.pyscripts/deliver.pyscripts/diagram_geometry.pyscripts/ensure-fonts.shscripts/ensure_mathjax.shscripts/font_compat.pyscripts/hangul.pyscripts/highlight.pyscripts/html_visibility.pyscripts/lint.pyscripts/math_render.pyscripts/mathjax-runtime/package.jsonscripts/mathjax_svg.jsscripts/mcp_server.pyscripts/mermaid_normalize.pyscripts/optional_deps.pyscripts/package.jsonscripts/render.pyscripts/shared.pyscripts/site_facts.pyscripts/tokens.pyscripts/verify.pyscripts/visual.py
Files
CHEATSHEET.mddoc20,102 bytesLICENSEasset1,061 bytesSKILL.mdcore20,951 bytesSKILL.mdcore20,951 bytesSKILL.mdcore20,951 bytesSKILL.mdcore20,951 bytesSKILL.mdcore20,951 bytesVERSIONasset7 bytesassets/diagrams/architecture-board.htmlasset22,009 bytesassets/diagrams/architecture.htmlasset10,798 bytesassets/diagrams/bar-chart.htmlasset8,025 bytesassets/diagrams/candlestick.htmlasset11,570 bytesassets/diagrams/class.htmlasset9,485 bytesassets/diagrams/donut-chart.htmlasset6,879 bytesassets/diagrams/er.htmlasset10,078 bytesassets/diagrams/flowchart.htmlasset8,983 bytesassets/diagrams/layer-stack.htmlasset8,980 bytesassets/diagrams/line-chart.htmlasset9,877 bytesassets/diagrams/quadrant.htmlasset9,402 bytesassets/diagrams/sequence.htmlasset7,297 bytesassets/diagrams/src/class.mmdasset241 bytesassets/diagrams/src/er.mmdasset121 bytesassets/diagrams/src/sequence.mmdasset184 bytesassets/diagrams/state-machine.htmlasset10,507 bytesassets/diagrams/swimlane.htmlasset9,751 bytesassets/diagrams/timeline.htmlasset8,081 bytesassets/diagrams/tree.htmlasset11,105 bytesassets/diagrams/venn.htmlasset6,644 bytesassets/diagrams/waterfall.htmlasset8,895 bytesassets/fonts/JetBrainsMono.woff2asset55,672 bytesassets/fonts/LICENSE-JetBrainsMono.txtdoc4,399 bytesassets/fonts/LICENSE-SourceHanSerifK.txtdoc5,120 bytesassets/images/logo.svgasset441 bytesassets/templates/changelog-en.htmlasset6,476 bytesassets/templates/changelog-ko.htmlasset7,563 bytesassets/templates/changelog.htmlasset7,029 bytesassets/templates/equity-report-en.htmlasset13,811 bytesassets/templates/equity-report-ko.htmlasset16,020 bytesassets/templates/equity-report.htmlasset15,188 bytesassets/templates/landing-page-en.htmlasset30,411 bytesassets/templates/landing-page-ko.htmlasset30,287 bytesassets/templates/landing-page-llms-full.txt.exampleasset2,450 bytesassets/templates/landing-page-llms.txt.exampleasset1,468 bytesassets/templates/landing-page-robots.txt.exampleasset1,128 bytesassets/templates/landing-page-sitemap.xml.exampleasset2,403 bytesassets/templates/landing-page-vercel.json.exampleasset1,109 bytesassets/templates/landing-page.htmlasset29,190 bytesassets/templates/letter-en.htmlasset7,331 bytesassets/templates/letter-ko.htmlasset8,960 bytesassets/templates/letter.htmlasset8,756 bytesassets/templates/long-doc-en.htmlasset14,766 bytesassets/templates/long-doc-ko.htmlasset16,986 bytesassets/templates/long-doc.htmlasset21,242 bytesassets/templates/marp/slides-marp-en.cssasset4,809 bytesassets/templates/marp/slides-marp-en.mddoc3,272 bytesassets/templates/marp/slides-marp.cssasset5,880 bytesassets/templates/marp/slides-marp.mddoc3,295 bytesassets/templates/one-pager-en.htmlasset11,371 bytesassets/templates/one-pager-ko.htmlasset13,428 bytesassets/templates/one-pager.htmlasset13,136 bytesassets/templates/portfolio-en.htmlasset19,129 bytesassets/templates/portfolio-ko.htmlasset20,522 bytesassets/templates/portfolio.htmlasset24,339 bytesassets/templates/resume-en.htmlasset25,123 bytesassets/templates/resume-ko.htmlasset27,742 bytesassets/templates/resume.htmlasset27,380 bytesassets/templates/slides-en.pyruns13,151 bytesassets/templates/slides-weasy-en.htmlasset7,799 bytesassets/templates/slides-weasy-ko.htmlasset9,426 bytesassets/templates/slides-weasy.htmlasset13,072 bytesassets/templates/slides.pyruns14,240 bytesassets/templates/social-cards-en.htmlasset9,406 bytesassets/templates/social-cards-ko.htmlasset10,023 bytesassets/templates/social-cards.htmlasset10,021 bytesreferences/anti-patterns.mddoc12,947 bytesreferences/brand-profile.mddoc7,439 bytesreferences/brand.example.mddoc2,954 bytesreferences/checks_thresholds.jsonasset546 bytesreferences/deck-preflight.mddoc3,443 bytesreferences/design.mddoc107,077 bytesreferences/diagrams.mddoc45,285 bytesreferences/mermaid-theme.jsonasset1,119 bytesreferences/mermaid.mddoc4,707 bytesreferences/production.mddoc51,236 bytesreferences/resume-writing.mddoc15,948 bytesreferences/schemas/changelog.jsonasset1,714 bytesreferences/schemas/equity-report.jsonasset3,012 bytesreferences/schemas/landing-page.jsonasset6,053 bytesreferences/schemas/letter.jsonasset1,466 bytesreferences/schemas/long-doc.jsonasset2,527 bytesreferences/schemas/one-pager.jsonasset1,592 bytesreferences/schemas/portfolio.jsonasset2,560 bytesreferences/schemas/resume.jsonasset3,459 bytesreferences/schemas/slides.jsonasset2,518 bytesreferences/schemas/social-cards.jsonasset1,960 bytesreferences/social-palettes.jsonasset1,672 bytesreferences/tokens.jsonasset579 bytesreferences/writing.mddoc41,141 bytesscripts/brand_extract.pyruns17,887 bytesscripts/build.pyruns11,104 bytesscripts/chart.pyruns33,844 bytesscripts/check-update.shruns2,894 bytesscripts/checks.pyruns30,202 bytesscripts/content.pyruns28,433 bytesscripts/deliver.pyruns13,973 bytesscripts/diagram_geometry.pyruns8,427 bytesscripts/ensure-fonts.shruns8,899 bytesscripts/ensure_mathjax.shruns4,672 bytesscripts/font_compat.pyruns5,703 bytesscripts/hangul.pyruns4,342 bytesscripts/highlight.pyruns5,678 bytesscripts/html_visibility.pyruns45,738 bytesscripts/lint.pyruns35,195 bytesscripts/math_render.pyruns26,307 bytesscripts/mathjax-runtime/package-lock.jsonasset7,371 bytesscripts/mathjax-runtime/package.jsonruns176 bytesscripts/mathjax_svg.jsruns4,646 bytesscripts/mcp_server.pyruns21,181 bytesscripts/mermaid_normalize.pyruns14,492 bytesscripts/optional_deps.pyruns11,207 bytesscripts/package.jsonruns25 bytesscripts/render.pyruns7,037 bytesscripts/shared.pyruns14,078 bytesscripts/site_facts.pyruns16,739 bytesscripts/tokens.pyruns7,129 bytesscripts/verify.pyruns23,824 bytesscripts/visual.pyruns7,076 bytes
Read SKILL.md
# kami · 紙
**紙 · かみ** means paper in Japanese.
Good content deserves good paper. Use Kami’s templates and layout rules to create documents and landing pages with serif fonts, warm backgrounds, and ink-blue accents.
Part of `Kaku · Waza · Kami` - Kaku writes code, Waza drills habits, **Kami delivers documents**.
Commands and paths below are relative to this skill's directory. Keep the document in the user's working directory and call the scripts from there by their full path (`python3 <skill>/scripts/build.py ...`); relative file arguments resolve from your working directory first.
**Update check (non-blocking).** At the start of a task, run `bash scripts/check-update.sh`. It keeps a local daily marker and, at most once a day, reads Kami's latest published GitHub Release; it uploads no document or task content and stays silent when offline or sandboxed. When it prints a line about a newer Kami, relay it and continue.
**Brand profile.** If `~/.config/kami/brand.md` (or the legacy `~/.kami/brand.md`) exists, read `references/brand-profile.md` and apply it. Precedence: explicit prompt > editorial judgment > habit notes > frontmatter defaults > built-in defaults. The profile fills gaps silently and never overrides the current conversation. When the user names another project as the visual reference, run the style scan in the same file. When they give only a brand website, `python3 scripts/brand_extract.py <url>` drafts a profile; show the draft and use it for this document only after they accept it.
View the complete source on GitHubSkills included
- kami
- kami
Repository facts
- License
- MIT
- Created
- Apr 20, 2026
- Last pushed
- Nov 5, 2026
- Forks
- 581
- Open issues
- 0
- Project activity
- Active
Rank over the last 12 weeks
Now #128 · best #115 · down 7 in 30 days
- #124 on Oct 29
- #126 from Oct 30 to Oct 31
- #125 from Nov 1 to Nov 2
- #126 from Nov 3 to Nov 4
- #127 from Nov 5 to Nov 6
- #128 since Nov 7
39 earlier periods
- #114 on Aug 2
- #114 on Aug 8
- #115 on Aug 9
- #118 from Aug 10 to Aug 11
- #119 from Aug 12 to Aug 15
- #118 on Aug 16
- #119 from Aug 17 to Aug 18
- #118 from Aug 19 to Aug 21
- #117 on Aug 22
- #118 from Aug 23 to Aug 24
- #119 on Aug 25
- #120 from Aug 26 to Aug 29
- #119 from Aug 30 to Aug 31
- #118 from Sep 1 to Sep 2
- #119 on Sep 3
- #118 on Sep 4
- #119 on Sep 5
- #118 on Sep 6
- #119 on Sep 7
- #120 on Sep 8
- #119 on Sep 9
- #117 on Sep 10
- #116 from Sep 11 to Sep 15
- #115 from Sep 16 to Sep 17
- #117 from Sep 18 to Sep 19
- #118 from Sep 20 to Sep 25
- #117 on Sep 26
- #118 from Sep 27 to Sep 28
- #120 on Sep 29
- #119 on Sep 30
- #120 from Oct 1 to Oct 4
- #121 on Oct 5
- #119 on Oct 6
- #121 from Oct 7 to Oct 13
- #123 from Oct 14 to Oct 15
- #124 from Oct 16 to Oct 17
- #125 from Oct 18 to Oct 20
- #126 from Oct 21 to Oct 25
- #125 on Oct 28
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 7, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 8 notes
plugins/kami/skills/kami/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/kami/skills/kami/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/kami/skills/kami/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/kami/skills/kami/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/kami/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/kami/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/kami/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/kami/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 30 dangerous shell commandsin 8 files: kami/scripts/ensure-fonts.sh:29 kami/scripts/ensure-fonts.sh:29 kami/scripts/ensure_mathjax.sh:68 and 5 more
- 765 network referencesin 116 files: kami/scripts/mathjax-runtime/package-lock.json:17 kami/scripts/mathjax-runtime/package-lock.json:17 kami/assets/templates/landing-page-sitemap.xml.example:5 and 113 more
- 6 obfuscation signalsin 6 files: kami/scripts/font_compat.py:108 kami/scripts/hangul.py:19 kami/scripts/optional_deps.py:145 and 3 more
- No instruction overrides
- 60 executable scriptsin 60 files: kami/assets/templates/slides-en.py:1 kami/assets/templates/slides.py:1 kami/scripts/brand_extract.py:1 and 57 more
- 18 references to secretsin 10 files: kami/scripts/font_compat.py:33 kami/scripts/shared.py:74 kami/scripts/font_compat.py:33 and 7 more
- No requests to vote in Hot
Show all 879 signals by file
.claude-plugin/marketplace.json
plugins/kami/.claude-plugin/plugin.json
- Network accessline 7
"email": "hitw93@gmail.com" }, "homepage": "https://github.com/tw93/kami", - Network accessline 8
}, "homepage": "https://github.com/tw93/kami", "repository": "https://github.com/tw93/kami", - Network accessline 9
"homepage": "https://github.com/tw93/kami", - Network accessline 10
"repository": "https://github.com/tw93/kami",
plugins/kami/skills/kami/assets/diagrams/architecture-board.html
- Network accessline 88
Note: AI request path is not the main axis, demoted to a caption --> <svg viewBox="0 0 1200 1016" xmlns="http://www.w3.org/2000/svg"> - Network accessline 89
--> <svg viewBox="0 0 1200 1016" xmlns="http://www.w3.org/2000/svg"> <defs> - Network accessline 90
<svg viewBox="0 0 1200 1016" xmlns="http://www.w3.org/2000/svg">
plugins/kami/skills/kami/assets/diagrams/architecture.html
- Network accessline 81
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg">
plugins/kami/skills/kami/assets/diagrams/bar-chart.html
- Network accessline 84
<svg viewBox="0 0 680 300" xmlns="http://www.w3.org/2000/svg" role="img" data-kami-chart="bar" data-kami-spec="{"categories":["2021","2022","2023","2024"],"series":[{"name&quo
plugins/kami/skills/kami/assets/diagrams/candlestick.html
- Network accessline 86
<svg viewBox="0 0 760 300" xmlns="http://www.w3.org/2000/svg" role="img" data-kami-chart="candlestick" data-kami-spec="{"points":[{"close":126,"high":128,"label":"{{D1}}","low":116
plugins/kami/skills/kami/assets/diagrams/class.html
- Network accessline 17
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 18
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 19
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 24
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 25
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 26
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 100
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 208.2 604.6" width="208.2" height="604.6" style="background:#f5f4ed">
plugins/kami/skills/kami/assets/diagrams/donut-chart.html
- Network accessline 84
<svg viewBox="0 0 680 286" xmlns="http://www.w3.org/2000/svg" role="img" data-kami-chart="donut" data-kami-spec="{"center_label":"{{Center label}}","items":[{"label":"{{Category A}}","v
plugins/kami/skills/kami/assets/diagrams/er.html
- Network accessline 17
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 18
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 19
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 24
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 25
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 26
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 100
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 961.866 262" width="961.866" height="262" style="background:#f5f4ed">
plugins/kami/skills/kami/assets/diagrams/flowchart.html
- Network accessline 81
<svg viewBox="0 0 860 520" xmlns="http://www.w3.org/2000/svg">
plugins/kami/skills/kami/assets/diagrams/layer-stack.html
- Network accessline 80
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg">
plugins/kami/skills/kami/assets/diagrams/line-chart.html
- Network accessline 84
<svg viewBox="0 0 680 300" xmlns="http://www.w3.org/2000/svg" role="img" data-kami-chart="line" data-kami-spec="{"categories":["Jan","Feb","Mar","Apr","May","Jun","J
plugins/kami/skills/kami/assets/diagrams/quadrant.html
- Network accessline 80
<svg viewBox="0 0 820 540" xmlns="http://www.w3.org/2000/svg">
plugins/kami/skills/kami/assets/diagrams/sequence.html
- Network accessline 17
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 18
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 19
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 24
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 25
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 26
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 100
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="420" height="280" style="background:#f5f4ed">
plugins/kami/skills/kami/assets/diagrams/state-machine.html
- Network accessline 80
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg">
plugins/kami/skills/kami/assets/diagrams/swimlane.html
- Network accessline 80
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg">
plugins/kami/skills/kami/assets/diagrams/timeline.html
- Network accessline 80
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg">
plugins/kami/skills/kami/assets/diagrams/tree.html
- Network accessline 80
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg">
plugins/kami/skills/kami/assets/diagrams/venn.html
- Network accessline 80
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg">
plugins/kami/skills/kami/assets/diagrams/waterfall.html
- Network accessline 87
<svg viewBox="0 0 720 300" xmlns="http://www.w3.org/2000/svg" role="img" data-kami-chart="waterfall" data-kami-spec="{"items":[{"label":"{{Start}}","total":true,"value":120},{"label&quo
plugins/kami/skills/kami/assets/fonts/LICENSE-JetBrainsMono.txt
- Network accessline 1
Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono) - Network accessline 3
This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: https://openfontlicense.org - Network accessline 5
https://openfontlicense.org
plugins/kami/skills/kami/assets/fonts/LICENSE-SourceHanSerifK.txt
- Network accessline 1
Source Han Serif K (also distributed as Noto Serif KR) Copyright 2017-2022 Adobe (http://www.adobe.com/), with Reserved Font - Network accessline 2
Copyright 2017-2022 Adobe (http://www.adobe.com/), with Reserved Font - Network accessline 9
Source: https://github.com/adobe-fonts/source-han-serif (Adobe official) - Network accessline 10
https://github.com/adobe-fonts/source-han-serif (Adobe official) - Network accessline 11
https://fonts.google.com/noto/specimen/Noto+Serif+KR (Google Fonts mirror)
plugins/kami/skills/kami/assets/images/logo.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" fill="none">
plugins/kami/skills/kami/assets/templates/changelog-ko.html
- Network accessline 23
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 24
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 25
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 32
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 33
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 34
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype");
plugins/kami/skills/kami/assets/templates/changelog.html
- Network accessline 22
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 23
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 24
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 31
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 32
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 33
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype");
plugins/kami/skills/kami/assets/templates/equity-report-ko.html
- Network accessline 20
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 21
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 22
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 29
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 30
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 31
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype");
plugins/kami/skills/kami/assets/templates/equity-report.html
- Network accessline 18
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 19
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 20
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 27
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 28
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 29
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype");
plugins/kami/skills/kami/assets/templates/landing-page-en.html
- Network accessline 23
<link rel="icon" type="image/png" sizes="32x32" href="{{FAVICON_32}}"> <link rel="canonical" href="{{CANONICAL_URL}}"> <!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> - Network accessline 24
<link rel="canonical" href="{{CANONICAL_URL}}"> <!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> <link rel="alternate" hreflang="en" href="{{SITE_ORIGIN}}/"> - Network accessline 25
<!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> - Network accessline 38
<script type="application/ld+json"> { "@context": "https://schema.org", - Network accessline 39
{ "@context": "https://schema.org", "@type": "SoftwareApplication", - Network accessline 40
"@context": "https://schema.org", - Network accessline 54
"price": "{{PRICE_AMOUNT}}", "priceCurrency": "{{PRICE_CURRENCY}}", "availability": "https://schema.org/InStock" - Network accessline 55
"priceCurrency": "{{PRICE_CURRENCY}}", "availability": "https://schema.org/InStock" } - Network accessline 56
"availability": "https://schema.org/InStock" - Network accessline 64
font-family: "JetBrains Mono"; src: url("../fonts/JetBrainsMono.woff2") format("woff2"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); - Network accessline 65
src: url("../fonts/JetBrainsMono.woff2") format("woff2"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); font-weight: 400; - Network accessline 66
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); - Network accessline 1020
<div class="links"> <!-- {{FOOTER_LINKS}}, middot-separated editorial links, e.g.: <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> · - Network accessline 1021
<!-- {{FOOTER_LINKS}}, middot-separated editorial links, e.g.: <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> · <a href="mailto:...">Email</a> · - Network accessline 1022
<a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> ·
plugins/kami/skills/kami/assets/templates/landing-page-ko.html
- Network accessline 23
<link rel="icon" type="image/png" sizes="32x32" href="{{FAVICON_32}}"> <link rel="canonical" href="{{CANONICAL_URL}}"> <!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> - Network accessline 24
<link rel="canonical" href="{{CANONICAL_URL}}"> <!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> <link rel="alternate" hreflang="en" href="{{SITE_ORIGIN}}/"> - Network accessline 25
<!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> - Network accessline 38
<script type="application/ld+json"> { "@context": "https://schema.org", - Network accessline 39
{ "@context": "https://schema.org", "@type": "SoftwareApplication", - Network accessline 40
"@context": "https://schema.org", - Network accessline 55
"price": "{{PRICE_AMOUNT}}", "priceCurrency": "{{PRICE_CURRENCY}}", "availability": "https://schema.org/InStock" - Network accessline 56
"priceCurrency": "{{PRICE_CURRENCY}}", "availability": "https://schema.org/InStock" } - Network accessline 57
"availability": "https://schema.org/InStock" - Network accessline 63
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 64
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 65
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 70
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 71
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 72
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 77
font-family: "JetBrains Mono"; src: url("../fonts/JetBrainsMono.woff2") format("woff2"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); - Network accessline 78
src: url("../fonts/JetBrainsMono.woff2") format("woff2"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); font-weight: 400; - Network accessline 79
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); - Network accessline 1034
<div class="links"> <!-- {{FOOTER_LINKS}}, middot-separated editorial links, e.g.: <a href="https://x.com/..." target="_blank" rel="noopener">트위터</a> · - Network accessline 1035
<!-- {{FOOTER_LINKS}}, middot-separated editorial links, e.g.: <a href="https://x.com/..." target="_blank" rel="noopener">트위터</a> · <a href="mailto:...">이메일</a> · - Network accessline 1036
<a href="https://x.com/..." target="_blank" rel="noopener">트위터</a> ·
plugins/kami/skills/kami/assets/templates/landing-page-robots.txt.example
- Network accessline 12
Sitemap: https://example.com/sitemap.xml
plugins/kami/skills/kami/assets/templates/landing-page-sitemap.xml.example
- Network accessline 5
Drop any <xhtml:link> line whose locale is not shipped. Update <lastmod> on each public release. --> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" - Network accessline 6
--> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> - Network accessline 7
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" - Network accessline 8
xmlns:xhtml="http://www.w3.org/1999/xhtml"> - Network accessline 9
<url> <loc>https://example.com/</loc> <xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 10
<loc>https://example.com/</loc> - Network accessline 11
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 12
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/"/> - Network accessline 13
<xhtml:link rel="alternate" hreflang="zh-Hant" href="https://example.com/tw/"/> - Network accessline 14
<xhtml:link rel="alternate" hreflang="ja" href="https://example.com/ja/"/> - Network accessline 15
<xhtml:link rel="alternate" hreflang="ko" href="https://example.com/ko/"/> - Network accessline 16
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/"/> - Network accessline 20
</url> <url> <loc>https://example.com/zh/</loc> - Network accessline 21
<url> <loc>https://example.com/zh/</loc> <xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 22
<loc>https://example.com/zh/</loc> - Network accessline 23
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 24
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/"/> - Network accessline 28
</url> <url> <loc>https://example.com/tw/</loc> - Network accessline 29
<url> <loc>https://example.com/tw/</loc> <xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 30
<loc>https://example.com/tw/</loc> - Network accessline 31
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 32
<xhtml:link rel="alternate" hreflang="zh-Hant" href="https://example.com/tw/"/> - Network accessline 36
</url> <url> <loc>https://example.com/ja/</loc> - Network accessline 37
<url> <loc>https://example.com/ja/</loc> <xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 38
<loc>https://example.com/ja/</loc> - Network accessline 39
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 40
<xhtml:link rel="alternate" hreflang="ja" href="https://example.com/ja/"/> - Network accessline 44
</url> <url> <loc>https://example.com/ko/</loc> - Network accessline 45
<url> <loc>https://example.com/ko/</loc> <xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 46
<loc>https://example.com/ko/</loc> - Network accessline 47
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 48
<xhtml:link rel="alternate" hreflang="ko" href="https://example.com/ko/"/>
plugins/kami/skills/kami/assets/templates/landing-page-vercel.json.example
- Network accessline 15
"source": "/(.*)", "has": [{ "type": "host", "value": "www.example.com" }], "destination": "https://example.com/$1", - Network accessline 16
"has": [{ "type": "host", "value": "www.example.com" }], "destination": "https://example.com/$1", "permanent": true - Network accessline 17
"destination": "https://example.com/$1",
plugins/kami/skills/kami/assets/templates/landing-page.html
- Network accessline 23
<link rel="icon" type="image/png" sizes="32x32" href="{{FAVICON_32}}"> <link rel="canonical" href="{{CANONICAL_URL}}"> <!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> - Network accessline 24
<link rel="canonical" href="{{CANONICAL_URL}}"> <!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> <link rel="alternate" hreflang="en" href="{{SITE_ORIGIN}}/"> - Network accessline 25
<!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> - Network accessline 38
<script type="application/ld+json"> { "@context": "https://schema.org", - Network accessline 39
{ "@context": "https://schema.org", "@type": "SoftwareApplication", - Network accessline 40
"@context": "https://schema.org", - Network accessline 55
"price": "{{PRICE_AMOUNT}}", "priceCurrency": "{{PRICE_CURRENCY}}", "availability": "https://schema.org/InStock" - Network accessline 56
"priceCurrency": "{{PRICE_CURRENCY}}", "availability": "https://schema.org/InStock" } - Network accessline 57
"availability": "https://schema.org/InStock" - Network accessline 65
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 66
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 67
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 73
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 74
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 75
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 81
font-family: "JetBrains Mono"; src: url("../fonts/JetBrainsMono.woff2") format("woff2"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); - Network accessline 82
src: url("../fonts/JetBrainsMono.woff2") format("woff2"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); font-weight: 400; - Network accessline 83
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); - Network accessline 1024
<div class="links"> <!-- {{FOOTER_LINKS}},居中点分隔链接,例如: <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> · - Network accessline 1025
<!-- {{FOOTER_LINKS}},居中点分隔链接,例如: <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> · <a href="mailto:...">邮箱</a> · - Network accessline 1026
<a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> ·
plugins/kami/skills/kami/assets/templates/letter-ko.html
- Network accessline 20
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 21
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 22
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 29
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 30
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 31
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype");
plugins/kami/skills/kami/assets/templates/letter.html
- Network accessline 18
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 19
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 20
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 27
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 28
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 29
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype");
plugins/kami/skills/kami/assets/templates/long-doc-ko.html
- Network accessline 23
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 24
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 25
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 32
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 33
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 34
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype");
plugins/kami/skills/kami/assets/templates/long-doc.html
- Network accessline 21
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 22
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 23
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 30
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 31
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 32
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 552
<figure> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="420" height="280" style="background:#f5f4ed"> - Network accessline 553
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="420" height="280" style="background:#f5f4ed">
plugins/kami/skills/kami/assets/templates/marp/slides-marp.css
- Network accessline 5
font-family: "TsangerJinKai02"; src: url("../../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 6
src: url("../../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 7
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 11
font-family: "TsangerJinKai02"; src: url("../../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 12
src: url("../../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 13
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype");
plugins/kami/skills/kami/assets/templates/one-pager-ko.html
- Network accessline 19
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 20
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 21
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 28
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 29
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 30
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype");
plugins/kami/skills/kami/assets/templates/one-pager.html
- Network accessline 19
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 20
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 21
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 28
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 29
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 30
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype");
plugins/kami/skills/kami/assets/templates/portfolio-ko.html
- Network accessline 21
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 22
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 23
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 30
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 31
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 32
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype");
plugins/kami/skills/kami/assets/templates/portfolio.html
- Network accessline 19
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 20
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 21
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 28
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 29
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 30
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 580
<!-- 主图 --> <div class="project-hero" style="background:#f5f4ed;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="540" height="360" style="background:#f5f4ed"> - Network accessline 581
<div class="project-hero" style="background:#f5f4ed;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="540" height="360" style="background:#f5f4ed"> <style> - Network accessline 582
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="540" height="360" style="background:#f5f4ed">
plugins/kami/skills/kami/assets/templates/resume-ko.html
- Network accessline 19
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 20
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 21
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 28
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 29
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 30
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype");
plugins/kami/skills/kami/assets/templates/resume.html
- Network accessline 13
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 14
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 15
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 22
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 23
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 24
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype");
plugins/kami/skills/kami/assets/templates/slides-en.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/kami/skills/kami/assets/templates/slides-weasy-ko.html
- Network accessline 12
<title>{{제목}}</title> <style> @font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf" - Network accessline 13
<style> @font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 14
@font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weigh - Network accessline 15
@font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight:
plugins/kami/skills/kami/assets/templates/slides-weasy.html
- Network accessline 5
<title>{{标题}}</title> <style> @font-face { font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("tru - Network accessline 6
<style> @font-face { font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: - Network accessline 7
@font-face { font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; } - Network accessline 8
@font-face { font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; } - Network accessline 377
<div style="text-align:center; margin-top:8mm;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="540" height="360" style="background:#f5f4ed;"> - Network accessline 378
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="540" height="360" style="background:#f5f4ed;">
plugins/kami/skills/kami/assets/templates/slides.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/kami/skills/kami/assets/templates/social-cards-ko.html
- Network accessline 15
<meta name="author" content="{{작성자}}"> <style> @font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSer - Network accessline 16
<style> @font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 17
@font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weigh - Network accessline 18
@font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight:
plugins/kami/skills/kami/assets/templates/social-cards.html
- Network accessline 17
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 18
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 19
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 24
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 25
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 26
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype");
plugins/kami/skills/kami/references/brand-profile.md
- Network accessline 14
`python3 scripts/brand_extract.py https://example.com [-o brand.md]` drafts a profile from a public site. It fetches only that page and up to five of its stylesheets from the same host or a subdomain of it, then ranks color, font, and logo - Network accessline 24
| `email` | `{{EMAIL}}` | | `website` | `{{WEBSITE}}`, `{{PERSONAL_SITE}}` | | `github` | `{{GITHUB_URL}}` (expand to full URL: `https://github.com/<value>`) | - Network accessline 25
| `website` | `{{WEBSITE}}`, `{{PERSONAL_SITE}}` | | `github` | `{{GITHUB_URL}}` (expand to full URL: `https://github.com/<value>`) | | `x` | `{{X_URL}}` (expand to `https://x.com/<value>`) | - Network accessline 26
| `github` | `{{GITHUB_URL}}` (expand to full URL: `https://github.com/<value>`) | - Network accessline 27
| `x` | `{{X_URL}}` (expand to `https://x.com/<value>`) |
plugins/kami/skills/kami/references/diagrams.md
- Network accessline 339
The semantic-geometry approach draws on [Archify](https://github.com/tt-a1i/archify). - Network accessline 383
<figure> <svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg"> - Network accessline 384
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg"> - Network accessline 692
This capability is inspired by Cathryn Lavery's [diagram-design](https://github.com/cathrynlavery/diagram-design) (a Claude Code skill with 13 editorial diagram types). kami borrowed the **approach** (inline SVG, semantic tokens, complexity
plugins/kami/skills/kami/references/mermaid.md
- Network accessline 3
Kami turns Mermaid text into editorial, Kami-styled diagrams using [beautiful-mermaid](https://github.com/lukilabs/beautiful-mermaid) (MIT). Instead - Network accessline 4
[beautiful-mermaid](https://github.com/lukilabs/beautiful-mermaid) (MIT). Instead - Network accessline 11
|------|---------|----------|---------------| | **PDF** | one-pager / long-doc / equity-report etc. | WeasyPrint (no JS) | flowchart, state, sequence, class, ER | | **Browser** | any page running beautiful-mermaid (e.g. <https://agents.craf - Network accessline 13
| **Browser** | any page running beautiful-mermaid (e.g. <https://agents.craft.do/mermaid>) | beautiful-mermaid in the browser | all of the above + xychart | - Network accessline 55
# 1. Render the Mermaid to SVG in any browser running beautiful-mermaid # (e.g. https://agents.craft.do/mermaid). Theme choice does not matter -- - Network accessline 56
# (e.g. https://agents.craft.do/mermaid). Theme choice does not matter --
plugins/kami/skills/kami/references/production.md
- Network accessline 369
Use the `npx @marp-team/marp-cli@latest ...` form below for zero-install. For repeat use, install via `npm i -g @marp-team/marp-cli` or `brew install marp-cli` (see [marp-cli docs](https://github.com/marp-team/marp-cli)). Kami's build pipel - Network accessline 983
**Root cause**: WeasyPrint subsets a CID-keyed CFF font (the `.otf` build of Source Han Serif K) into a PDF font that MuPDF and Quartz draw blank; see the [upstream issue](https://github.com/Kozea/WeasyPrint/issues/1593). The same - Network accessline 984
Source Han Serif K) into a PDF font that MuPDF and Quartz draw blank; see the [upstream issue](https://github.com/Kozea/WeasyPrint/issues/1593). The same glyphs as TrueType outlines subset cleanly for every reader. `full_fonts=True` - Network accessline 985
[upstream issue](https://github.com/Kozea/WeasyPrint/issues/1593). The same - Network accessline 1059
svg = m.group(0) if 'xmlns=' not in svg[:200]: svg = svg.replace('<svg ', '<svg xmlns="http://www.w3.org/2000/svg" ', 1) - Network accessline 1060
if 'xmlns=' not in svg[:200]: svg = svg.replace('<svg ', '<svg xmlns="http://www.w3.org/2000/svg" ', 1) with open(f'/tmp/diagram-{i}.svg', 'w') as f: - Network accessline 1061
svg = svg.replace('<svg ', '<svg xmlns="http://www.w3.org/2000/svg" ', 1)
plugins/kami/skills/kami/scripts/brand_extract.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 4
Usage: python3 scripts/brand_extract.py https://example.com [-o brand.md] - Network accessline 5
python3 scripts/brand_extract.py https://example.com [-o brand.md] - Network accessline 305
def _fetch(url: str, cap: int) -> str: request = urllib.request.Request(url, headers={"User-Agent": USER_AGENT, "Accept": "*/*"}) - Network accessline 306
request = urllib.request.Request(url, headers={"User-Agent": USER_AGENT, "Accept": "*/*"}) - Network accessline 307
with urllib.request.urlopen(request, timeout=TIMEOUT_SECONDS) as response: - Network accessline 424
def main(argv: list[str] | None = None) -> int: parser = argparse.ArgumentParser(description="Draft a Kami brand profile from a website.") parser.add_argument("url", help="page to scan, e.g. https://example.com") - Network accessline 425
parser = argparse.ArgumentParser(description="Draft a Kami brand profile from a website.") parser.add_argument("url", help="page to scan, e.g. https://example.com") parser.add_argument("-o", "--output", type=Path, help="write the dr - Network accessline 426
parser.add_argument("url", help="page to scan, e.g. https://example.com") - Network accessline 430
url = args.url if "://" in args.url else f"https://{args.url}"
plugins/kami/skills/kami/scripts/build.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/kami/skills/kami/scripts/chart.py
- Executable scriptline 1
Executable file - Network accessline 208
title = self.spec.get("title") label = f' aria-label="{_esc(title)}"' if isinstance(title, str) and title else "" head = (f'<svg viewBox="0 0 {self.width} {self.height}" xmlns="http://www.w3.org/2000/svg" ' - Network accessline 209
label = f' aria-label="{_esc(title)}"' if isinstance(title, str) and title else "" head = (f'<svg viewBox="0 0 {self.width} {self.height}" xmlns="http://www.w3.org/2000/svg" ' f'role="img"{label} data-kami-chart="{se - Network accessline 210
head = (f'<svg viewBox="0 0 {self.width} {self.height}" xmlns="http://www.w3.org/2000/svg" '
plugins/kami/skills/kami/scripts/check-update.sh
- Executable scriptline 1
#!/usr/bin/env bash - Network accessline 14
LATEST_RELEASE_URL="https://github.com/${REPO}/releases/latest" - Dangerous shell operationline 48
rm -f "${cache_dir}"/update-checked-2* 2>/dev/null # sweep legacy per-day markers - Network accessline 50
command -v curl >/dev/null 2>&1 || exit 0 - Network accessline 51
if [ -n "${KAMI_UPDATE_URL:-}" ]; then remote_ver="$(curl -fsSL --max-time 3 "${KAMI_UPDATE_URL}" 2>/dev/null | tr -d '[:space:]')" else - Network accessline 52
remote_ver="$(curl -fsSL --max-time 3 "${KAMI_UPDATE_URL}" 2>/dev/null | tr -d '[:space:]')" - Network accessline 53
else release_url="$(curl -fsSL --max-time 3 -o /dev/null -w '%{url_effective}' \ "${LATEST_RELEASE_URL}" 2>/dev/null)" - Network accessline 54
release_url="$(curl -fsSL --max-time 3 -o /dev/null -w '%{url_effective}' \ - Network accessline 55
"${LATEST_RELEASE_URL}" 2>/dev/null)"
plugins/kami/skills/kami/scripts/checks.py
- Executable scriptline 1
Executable file
plugins/kami/skills/kami/scripts/content.py
- Executable scriptline 1
Executable file
plugins/kami/skills/kami/scripts/deliver.py
- Executable scriptline 1
Executable file
plugins/kami/skills/kami/scripts/diagram_geometry.py
- Executable scriptline 1
Executable file
plugins/kami/skills/kami/scripts/ensure-fonts.sh
- Executable scriptline 1
#!/usr/bin/env bash - Dangerous shell operationline 29
rm -f "$FONT_DIR"/*."$TMP_SUFFIX" "$SKILL_FONT_DIR"/*."$TMP_SUFFIX" 2>/dev/null || true - Network accessline 49
MIRROR_SOURCES=( "https://cdn.jsdmirror.com/gh/tw93/Kami@main/assets/fonts" - Network accessline 50
"https://cdn.jsdmirror.com/gh/tw93/Kami@main/assets/fonts" - Network accessline 51
"https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts" - Network accessline 115
local official_url="https://tsanger.cn/download/${cn_name}" - Network accessline 116
echo " Trying: tsanger.cn (official)" if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$official_url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then if check_size "$target.$TMP_SUFFIX" "$MIN_SIZE_CN"; then - Network accessline 117
if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$official_url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then - Dangerous shell operationline 123
rm -f "$target.$TMP_SUFFIX" - Dangerous shell operationline 126
rm -f "$target.$TMP_SUFFIX" - Network accessline 131
local url="$src/$local_name" echo " Trying: $url" if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then - Network accessline 132
echo " Trying: $url" if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then if check_size "$target.$TMP_SUFFIX" "$MIN_SIZE_CN"; then - Network accessline 133
if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then - Dangerous shell operationline 139
rm -f "$target.$TMP_SUFFIX" - Dangerous shell operationline 142
rm -f "$target.$TMP_SUFFIX" - Network accessline 157
local url="$src/$local_name" echo " Trying: $url" if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then - Network accessline 158
echo " Trying: $url" if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then if check_size "$target.$TMP_SUFFIX" "$MIN_SIZE_KO"; then - Network accessline 159
if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then - Dangerous shell operationline 165
rm -f "$target.$TMP_SUFFIX" - Dangerous shell operationline 168
rm -f "$target.$TMP_SUFFIX" - Network accessline 230
echo "" echo "Some Source Han Serif K files could not be downloaded. Alternatives:" echo " 1. Download from https://github.com/adobe-fonts/source-han-serif/releases" - Network accessline 231
echo "Some Source Han Serif K files could not be downloaded. Alternatives:" echo " 1. Download from https://github.com/adobe-fonts/source-han-serif/releases" echo " 2. Copy SourceHanSerifKR-Regular.otf and -Medium.otf manually - Network accessline 232
echo " 1. Download from https://github.com/adobe-fonts/source-han-serif/releases"
plugins/kami/skills/kami/scripts/ensure_mathjax.sh
- Executable scriptline 1
#!/usr/bin/env bash - Dangerous shell operationline 68
rm -rf -- "$stale_staging" - Dangerous shell operationline 72
rm -f -- "$STAGING_FILE" "$OWNER_FILE" - Dangerous shell operationline 104
rm -rf -- "$STAGING_ROOT" - Dangerous shell operationline 110
rm -f -- "$STAGING_FILE" "$OWNER_FILE" - Dangerous shell operationline 146
rm -f -- "$STAGING_FILE" "$OWNER_FILE"
plugins/kami/skills/kami/scripts/font_compat.py
plugins/kami/skills/kami/scripts/hangul.py
plugins/kami/skills/kami/scripts/highlight.py
- Executable scriptline 1
Executable file
plugins/kami/skills/kami/scripts/html_visibility.py
- Executable scriptline 1
Executable file
plugins/kami/skills/kami/scripts/lint.py
- Executable scriptline 1
Executable file
plugins/kami/skills/kami/scripts/math_render.py
plugins/kami/skills/kami/scripts/mathjax-runtime/package-lock.json
- Network accessline 17
"node_modules/@mathjax/mathjax-newcm-font": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/@mathjax/mathjax-newcm-font/-/mathjax-newcm-font-4.1.3.tgz", - Network accessline 18
"version": "4.1.3", "resolved": "https://registry.npmjs.org/@mathjax/mathjax-newcm-font/-/mathjax-newcm-font-4.1.3.tgz", "integrity": "sha512-gzAB3dFHilHX1l5x2xUqRL+1jDQt3Fyza1DkEMVXWC4E8SvsGdlgEza47HYi2WhVcgfkvf4zgUGzuhbq3Pjlew - Network accessline 19
"resolved": "https://registry.npmjs.org/@mathjax/mathjax-newcm-font/-/mathjax-newcm-font-4.1.3.tgz", - Network accessline 23
"node_modules/@mathjax/src": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/@mathjax/src/-/src-4.1.3.tgz", - Network accessline 24
"version": "4.1.3", "resolved": "https://registry.npmjs.org/@mathjax/src/-/src-4.1.3.tgz", "integrity": "sha512-rIrWquuBSoJuoMBdC/1qD+AUHTorlccPicoVy6P2xbUgnuDBpCcpbHtOAsB8L3hdCHtNBg92lF8e3Fz+pkcQbw==", - Network accessline 25
"resolved": "https://registry.npmjs.org/@mathjax/src/-/src-4.1.3.tgz", - Network accessline 35
"node_modules/@xmldom/xmldom": { "version": "0.9.12", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.12.tgz", - Network accessline 36
"version": "0.9.12", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.12.tgz", "integrity": "sha512-5AXjrcMClTryPe9LgZrygpB1lj7s0S9E0+W+AHaVKAVyHanafK86iPSvG5xHVSp/jC+VH1UXu0TAEmY279xH7A==", - Network accessline 37
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.12.tgz", - Network accessline 44
"node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - Network accessline 45
"version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - Network accessline 46
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - Network accessline 53
"node_modules/brace-expansion": { "version": "5.0.9", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", - Network accessline 54
"version": "5.0.9", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", - Network accessline 55
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", - Network accessline 65
"node_modules/commander": { "version": "14.0.3", "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", - Network accessline 66
"version": "14.0.3", "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", - Network accessline 67
"resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", - Network accessline 74
"node_modules/glob": { "version": "13.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - Network accessline 75
"version": "13.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - Network accessline 76
"resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - Network accessline 86
}, "funding": { "url": "https://github.com/sponsors/isaacs" - Network accessline 87
"funding": { "url": "https://github.com/sponsors/isaacs" } - Network accessline 88
"url": "https://github.com/sponsors/isaacs" - Network accessline 91
"node_modules/lru-cache": { "version": "11.5.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - Network accessline 92
"version": "11.5.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", - Network accessline 93
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - Network accessline 100
"node_modules/mhchemparser": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", - Network accessline 101
"version": "4.2.1", "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==", - Network accessline 102
"resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", - Network accessline 106
"node_modules/minimatch": { "version": "10.2.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", - Network accessline 107
"version": "10.2.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", - Network accessline 108
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", - Network accessline 116
}, "funding": { "url": "https://github.com/sponsors/isaacs" - Network accessline 117
"funding": { "url": "https://github.com/sponsors/isaacs" } - Network accessline 118
"url": "https://github.com/sponsors/isaacs" - Network accessline 121
"node_modules/minipass": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - Network accessline 122
"version": "7.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - Network accessline 123
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - Network accessline 130
"node_modules/mj-context-menu": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-1.0.0.tgz", - Network accessline 131
"version": "1.0.0", "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-1.0.0.tgz", "integrity": "sha512-OSgBFQRCVhrZwRa9lhqnKcJU92dd/YXgBjup0uyeuj9bOaVsf4myOyrjU4PfhYkdDk6AqVUTov7v5uFMvIbduA==", - Network accessline 132
"resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-1.0.0.tgz", - Network accessline 139
"node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - Network accessline 140
"version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw= - Network accessline 141
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - Network accessline 145
"node_modules/path-scurry": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - Network accessline 146
"version": "2.0.2", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", - Network accessline 147
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - Network accessline 156
}, "funding": { "url": "https://github.com/sponsors/isaacs" - Network accessline 157
"funding": { "url": "https://github.com/sponsors/isaacs" } - Network accessline 158
"url": "https://github.com/sponsors/isaacs" - Network accessline 161
"node_modules/rimraf": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", - Network accessline 162
"version": "6.1.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==", - Network accessline 163
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", - Network accessline 175
}, "funding": { "url": "https://github.com/sponsors/isaacs" - Network accessline 176
"funding": { "url": "https://github.com/sponsors/isaacs" } - Network accessline 177
"url": "https://github.com/sponsors/isaacs" - Network accessline 180
"node_modules/speech-rule-engine": { "version": "5.0.0-rc.4", "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-5.0.0-rc.4.tgz", - Network accessline 181
"version": "5.0.0-rc.4", "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-5.0.0-rc.4.tgz", "integrity": "sha512-3dFcH2QtQNhtvUUc09TxoaEK4WG03B9Z57krFG9jocrKykKGu35BhIkWr0vgEAxZZomEWkeluff69y/EbYzP4 - Network accessline 182
"resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-5.0.0-rc.4.tgz", - Network accessline 194
"node_modules/wicked-good-xpath": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", - Network accessline 195
"version": "1.3.0", "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==", - Network accessline 196
"resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz",
plugins/kami/skills/kami/scripts/mathjax-runtime/package.json
- Executable scriptline 1
Executable file
plugins/kami/skills/kami/scripts/mathjax_svg.js
- Executable scriptline 1
#!/usr/bin/env node
plugins/kami/skills/kami/scripts/mcp_server.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/kami/skills/kami/scripts/mermaid_normalize.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 4
beautiful-mermaid (https://github.com/lukilabs/beautiful-mermaid) hangs its seven - Network accessline 18
No Node, no network, pure stdlib. Generate the SVG anywhere beautiful-mermaid runs (e.g. https://agents.craft.do/mermaid or your own one-off script), then run this. - Network accessline 19
(e.g. https://agents.craft.do/mermaid or your own one-off script), then run this.
plugins/kami/skills/kami/scripts/optional_deps.py
- Executable scriptline 1
Executable file - Dangerous shell operationline 28
"sudo apt-get install -y libcairo2 libpango-1.0-0 libpangoft2-1.0-0 libharfbuzz0b " - Dangerous shell operationline 29
"(Debian/Ubuntu), or `sudo dnf install cairo pango harfbuzz` (Fedora/RHEL)" - Possible obfuscationline 145
if signature in {b"\x00\x01\x00\x00", b"OTTO", b"true", b"typ1"}:
plugins/kami/skills/kami/scripts/package.json
- Executable scriptline 1
Executable file
plugins/kami/skills/kami/scripts/render.py
plugins/kami/skills/kami/scripts/shared.py
- Executable scriptline 1
Executable file - Network accessline 49
) GENERIC_AGENT_INSTALL_COMMAND = f"npx skills add {PUBLIC_REPO} -a claude-code codex cursor -g -y" CLAUDE_DESKTOP_PACKAGE_URL = "https://github.com/tw93/kami/releases/latest/download/kami.zip" - Network accessline 51
CLAUDE_DESKTOP_PACKAGE_URL = "https://github.com/tw93/kami/releases/latest/download/kami.zip" - Access to secretsline 74
[Credential-related source omitted] - Access to secretsline 83
[Credential-related source omitted] - Access to secretsline 89
[Credential-related source omitted]
plugins/kami/skills/kami/scripts/site_facts.py
- Executable scriptline 1
Executable file
plugins/kami/skills/kami/scripts/tokens.py
- Executable scriptline 1
Executable file
plugins/kami/skills/kami/scripts/verify.py
plugins/kami/skills/kami/scripts/visual.py
- Executable scriptline 1
Executable file
skills/kami/assets/diagrams/architecture-board.html
- Network accessline 88
Note: AI request path is not the main axis, demoted to a caption --> <svg viewBox="0 0 1200 1016" xmlns="http://www.w3.org/2000/svg"> - Network accessline 89
--> <svg viewBox="0 0 1200 1016" xmlns="http://www.w3.org/2000/svg"> <defs> - Network accessline 90
<svg viewBox="0 0 1200 1016" xmlns="http://www.w3.org/2000/svg">
skills/kami/assets/diagrams/architecture.html
- Network accessline 81
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg">
skills/kami/assets/diagrams/bar-chart.html
- Network accessline 84
<svg viewBox="0 0 680 300" xmlns="http://www.w3.org/2000/svg" role="img" data-kami-chart="bar" data-kami-spec="{"categories":["2021","2022","2023","2024"],"series":[{"name&quo
skills/kami/assets/diagrams/candlestick.html
- Network accessline 86
<svg viewBox="0 0 760 300" xmlns="http://www.w3.org/2000/svg" role="img" data-kami-chart="candlestick" data-kami-spec="{"points":[{"close":126,"high":128,"label":"{{D1}}","low":116
skills/kami/assets/diagrams/class.html
- Network accessline 17
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 18
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 19
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 24
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 25
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 26
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 100
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 208.2 604.6" width="208.2" height="604.6" style="background:#f5f4ed">
skills/kami/assets/diagrams/donut-chart.html
- Network accessline 84
<svg viewBox="0 0 680 286" xmlns="http://www.w3.org/2000/svg" role="img" data-kami-chart="donut" data-kami-spec="{"center_label":"{{Center label}}","items":[{"label":"{{Category A}}","v
skills/kami/assets/diagrams/er.html
- Network accessline 17
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 18
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 19
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 24
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 25
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 26
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 100
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 961.866 262" width="961.866" height="262" style="background:#f5f4ed">
skills/kami/assets/diagrams/flowchart.html
- Network accessline 81
<svg viewBox="0 0 860 520" xmlns="http://www.w3.org/2000/svg">
skills/kami/assets/diagrams/layer-stack.html
- Network accessline 80
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg">
skills/kami/assets/diagrams/line-chart.html
- Network accessline 84
<svg viewBox="0 0 680 300" xmlns="http://www.w3.org/2000/svg" role="img" data-kami-chart="line" data-kami-spec="{"categories":["Jan","Feb","Mar","Apr","May","Jun","J
skills/kami/assets/diagrams/quadrant.html
- Network accessline 80
<svg viewBox="0 0 820 540" xmlns="http://www.w3.org/2000/svg">
skills/kami/assets/diagrams/sequence.html
- Network accessline 17
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 18
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 19
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 24
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 25
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 26
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 100
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="420" height="280" style="background:#f5f4ed">
skills/kami/assets/diagrams/state-machine.html
- Network accessline 80
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg">
skills/kami/assets/diagrams/swimlane.html
- Network accessline 80
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg">
skills/kami/assets/diagrams/timeline.html
- Network accessline 80
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg">
skills/kami/assets/diagrams/tree.html
- Network accessline 80
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg">
skills/kami/assets/diagrams/venn.html
- Network accessline 80
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg">
skills/kami/assets/diagrams/waterfall.html
- Network accessline 87
<svg viewBox="0 0 720 300" xmlns="http://www.w3.org/2000/svg" role="img" data-kami-chart="waterfall" data-kami-spec="{"items":[{"label":"{{Start}}","total":true,"value":120},{"label&quo
skills/kami/assets/fonts/LICENSE-JetBrainsMono.txt
- Network accessline 1
Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono) - Network accessline 3
This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: https://openfontlicense.org - Network accessline 5
https://openfontlicense.org
skills/kami/assets/fonts/LICENSE-SourceHanSerifK.txt
- Network accessline 1
Source Han Serif K (also distributed as Noto Serif KR) Copyright 2017-2022 Adobe (http://www.adobe.com/), with Reserved Font - Network accessline 2
Copyright 2017-2022 Adobe (http://www.adobe.com/), with Reserved Font - Network accessline 9
Source: https://github.com/adobe-fonts/source-han-serif (Adobe official) - Network accessline 10
https://github.com/adobe-fonts/source-han-serif (Adobe official) - Network accessline 11
https://fonts.google.com/noto/specimen/Noto+Serif+KR (Google Fonts mirror)
skills/kami/assets/images/logo.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" fill="none">
skills/kami/assets/templates/changelog-ko.html
- Network accessline 23
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 24
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 25
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 32
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 33
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 34
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype");
skills/kami/assets/templates/changelog.html
- Network accessline 22
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 23
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 24
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 31
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 32
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 33
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype");
skills/kami/assets/templates/equity-report-ko.html
- Network accessline 20
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 21
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 22
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 29
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 30
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 31
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype");
skills/kami/assets/templates/equity-report.html
- Network accessline 18
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 19
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 20
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 27
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 28
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 29
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype");
skills/kami/assets/templates/landing-page-en.html
- Network accessline 23
<link rel="icon" type="image/png" sizes="32x32" href="{{FAVICON_32}}"> <link rel="canonical" href="{{CANONICAL_URL}}"> <!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> - Network accessline 24
<link rel="canonical" href="{{CANONICAL_URL}}"> <!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> <link rel="alternate" hreflang="en" href="{{SITE_ORIGIN}}/"> - Network accessline 25
<!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> - Network accessline 38
<script type="application/ld+json"> { "@context": "https://schema.org", - Network accessline 39
{ "@context": "https://schema.org", "@type": "SoftwareApplication", - Network accessline 40
"@context": "https://schema.org", - Network accessline 54
"price": "{{PRICE_AMOUNT}}", "priceCurrency": "{{PRICE_CURRENCY}}", "availability": "https://schema.org/InStock" - Network accessline 55
"priceCurrency": "{{PRICE_CURRENCY}}", "availability": "https://schema.org/InStock" } - Network accessline 56
"availability": "https://schema.org/InStock" - Network accessline 64
font-family: "JetBrains Mono"; src: url("../fonts/JetBrainsMono.woff2") format("woff2"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); - Network accessline 65
src: url("../fonts/JetBrainsMono.woff2") format("woff2"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); font-weight: 400; - Network accessline 66
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); - Network accessline 1020
<div class="links"> <!-- {{FOOTER_LINKS}}, middot-separated editorial links, e.g.: <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> · - Network accessline 1021
<!-- {{FOOTER_LINKS}}, middot-separated editorial links, e.g.: <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> · <a href="mailto:...">Email</a> · - Network accessline 1022
<a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> ·
skills/kami/assets/templates/landing-page-ko.html
- Network accessline 23
<link rel="icon" type="image/png" sizes="32x32" href="{{FAVICON_32}}"> <link rel="canonical" href="{{CANONICAL_URL}}"> <!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> - Network accessline 24
<link rel="canonical" href="{{CANONICAL_URL}}"> <!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> <link rel="alternate" hreflang="en" href="{{SITE_ORIGIN}}/"> - Network accessline 25
<!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> - Network accessline 38
<script type="application/ld+json"> { "@context": "https://schema.org", - Network accessline 39
{ "@context": "https://schema.org", "@type": "SoftwareApplication", - Network accessline 40
"@context": "https://schema.org", - Network accessline 55
"price": "{{PRICE_AMOUNT}}", "priceCurrency": "{{PRICE_CURRENCY}}", "availability": "https://schema.org/InStock" - Network accessline 56
"priceCurrency": "{{PRICE_CURRENCY}}", "availability": "https://schema.org/InStock" } - Network accessline 57
"availability": "https://schema.org/InStock" - Network accessline 63
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 64
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 65
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 70
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 71
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 72
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 77
font-family: "JetBrains Mono"; src: url("../fonts/JetBrainsMono.woff2") format("woff2"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); - Network accessline 78
src: url("../fonts/JetBrainsMono.woff2") format("woff2"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); font-weight: 400; - Network accessline 79
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); - Network accessline 1034
<div class="links"> <!-- {{FOOTER_LINKS}}, middot-separated editorial links, e.g.: <a href="https://x.com/..." target="_blank" rel="noopener">트위터</a> · - Network accessline 1035
<!-- {{FOOTER_LINKS}}, middot-separated editorial links, e.g.: <a href="https://x.com/..." target="_blank" rel="noopener">트위터</a> · <a href="mailto:...">이메일</a> · - Network accessline 1036
<a href="https://x.com/..." target="_blank" rel="noopener">트위터</a> ·
skills/kami/assets/templates/landing-page-robots.txt.example
- Network accessline 12
Sitemap: https://example.com/sitemap.xml
skills/kami/assets/templates/landing-page-sitemap.xml.example
- Network accessline 5
Drop any <xhtml:link> line whose locale is not shipped. Update <lastmod> on each public release. --> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" - Network accessline 6
--> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> - Network accessline 7
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" - Network accessline 8
xmlns:xhtml="http://www.w3.org/1999/xhtml"> - Network accessline 9
<url> <loc>https://example.com/</loc> <xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 10
<loc>https://example.com/</loc> - Network accessline 11
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 12
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/"/> - Network accessline 13
<xhtml:link rel="alternate" hreflang="zh-Hant" href="https://example.com/tw/"/> - Network accessline 14
<xhtml:link rel="alternate" hreflang="ja" href="https://example.com/ja/"/> - Network accessline 15
<xhtml:link rel="alternate" hreflang="ko" href="https://example.com/ko/"/> - Network accessline 16
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/"/> - Network accessline 20
</url> <url> <loc>https://example.com/zh/</loc> - Network accessline 21
<url> <loc>https://example.com/zh/</loc> <xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 22
<loc>https://example.com/zh/</loc> - Network accessline 23
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 24
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/"/> - Network accessline 28
</url> <url> <loc>https://example.com/tw/</loc> - Network accessline 29
<url> <loc>https://example.com/tw/</loc> <xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 30
<loc>https://example.com/tw/</loc> - Network accessline 31
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 32
<xhtml:link rel="alternate" hreflang="zh-Hant" href="https://example.com/tw/"/> - Network accessline 36
</url> <url> <loc>https://example.com/ja/</loc> - Network accessline 37
<url> <loc>https://example.com/ja/</loc> <xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 38
<loc>https://example.com/ja/</loc> - Network accessline 39
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 40
<xhtml:link rel="alternate" hreflang="ja" href="https://example.com/ja/"/> - Network accessline 44
</url> <url> <loc>https://example.com/ko/</loc> - Network accessline 45
<url> <loc>https://example.com/ko/</loc> <xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 46
<loc>https://example.com/ko/</loc> - Network accessline 47
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/> - Network accessline 48
<xhtml:link rel="alternate" hreflang="ko" href="https://example.com/ko/"/>
skills/kami/assets/templates/landing-page-vercel.json.example
- Network accessline 15
"source": "/(.*)", "has": [{ "type": "host", "value": "www.example.com" }], "destination": "https://example.com/$1", - Network accessline 16
"has": [{ "type": "host", "value": "www.example.com" }], "destination": "https://example.com/$1", "permanent": true - Network accessline 17
"destination": "https://example.com/$1",
skills/kami/assets/templates/landing-page.html
- Network accessline 23
<link rel="icon" type="image/png" sizes="32x32" href="{{FAVICON_32}}"> <link rel="canonical" href="{{CANONICAL_URL}}"> <!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> - Network accessline 24
<link rel="canonical" href="{{CANONICAL_URL}}"> <!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> <link rel="alternate" hreflang="en" href="{{SITE_ORIGIN}}/"> - Network accessline 25
<!-- Multilingual SEO. Remove any line whose locale is not shipped. {{SITE_ORIGIN}} is e.g. https://example.com --> - Network accessline 38
<script type="application/ld+json"> { "@context": "https://schema.org", - Network accessline 39
{ "@context": "https://schema.org", "@type": "SoftwareApplication", - Network accessline 40
"@context": "https://schema.org", - Network accessline 55
"price": "{{PRICE_AMOUNT}}", "priceCurrency": "{{PRICE_CURRENCY}}", "availability": "https://schema.org/InStock" - Network accessline 56
"priceCurrency": "{{PRICE_CURRENCY}}", "availability": "https://schema.org/InStock" } - Network accessline 57
"availability": "https://schema.org/InStock" - Network accessline 65
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 66
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 67
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 73
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 74
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 75
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 81
font-family: "JetBrains Mono"; src: url("../fonts/JetBrainsMono.woff2") format("woff2"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); - Network accessline 82
src: url("../fonts/JetBrainsMono.woff2") format("woff2"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); font-weight: 400; - Network accessline 83
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/skills/kami/assets/fonts/JetBrainsMono.woff2") format("woff2"); - Network accessline 1024
<div class="links"> <!-- {{FOOTER_LINKS}},居中点分隔链接,例如: <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> · - Network accessline 1025
<!-- {{FOOTER_LINKS}},居中点分隔链接,例如: <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> · <a href="mailto:...">邮箱</a> · - Network accessline 1026
<a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> ·
skills/kami/assets/templates/letter-ko.html
- Network accessline 20
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 21
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 22
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 29
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 30
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 31
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype");
skills/kami/assets/templates/letter.html
- Network accessline 18
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 19
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 20
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 27
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 28
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 29
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype");
skills/kami/assets/templates/long-doc-ko.html
- Network accessline 23
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 24
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 25
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 32
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 33
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 34
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype");
skills/kami/assets/templates/long-doc.html
- Network accessline 21
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 22
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 23
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 30
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 31
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 32
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 552
<figure> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="420" height="280" style="background:#f5f4ed"> - Network accessline 553
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="420" height="280" style="background:#f5f4ed">
skills/kami/assets/templates/marp/slides-marp.css
- Network accessline 5
font-family: "TsangerJinKai02"; src: url("../../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 6
src: url("../../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 7
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 11
font-family: "TsangerJinKai02"; src: url("../../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 12
src: url("../../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 13
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype");
skills/kami/assets/templates/one-pager-ko.html
- Network accessline 19
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 20
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 21
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 28
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 29
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 30
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype");
skills/kami/assets/templates/one-pager.html
- Network accessline 19
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 20
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 21
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 28
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 29
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 30
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype");
skills/kami/assets/templates/portfolio-ko.html
- Network accessline 21
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 22
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 23
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 30
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 31
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 32
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype");
skills/kami/assets/templates/portfolio.html
- Network accessline 19
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 20
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 21
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 28
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 29
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 30
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 580
<!-- 主图 --> <div class="project-hero" style="background:#f5f4ed;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="540" height="360" style="background:#f5f4ed"> - Network accessline 581
<div class="project-hero" style="background:#f5f4ed;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="540" height="360" style="background:#f5f4ed"> <style> - Network accessline 582
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="540" height="360" style="background:#f5f4ed">
skills/kami/assets/templates/resume-ko.html
- Network accessline 19
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 20
src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weight: 400; - Network accessline 21
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 28
font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); - Network accessline 29
src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight: 500; - Network accessline 30
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype");
skills/kami/assets/templates/resume.html
- Network accessline 13
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 14
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 15
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 22
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 23
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 24
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype");
skills/kami/assets/templates/slides-en.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/kami/assets/templates/slides-weasy-ko.html
- Network accessline 12
<title>{{제목}}</title> <style> @font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf" - Network accessline 13
<style> @font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 14
@font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weigh - Network accessline 15
@font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight:
skills/kami/assets/templates/slides-weasy.html
- Network accessline 5
<title>{{标题}}</title> <style> @font-face { font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("tru - Network accessline 6
<style> @font-face { font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: - Network accessline 7
@font-face { font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; } - Network accessline 8
@font-face { font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; } - Network accessline 377
<div style="text-align:center; margin-top:8mm;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="540" height="360" style="background:#f5f4ed;"> - Network accessline 378
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 280" width="540" height="360" style="background:#f5f4ed;">
skills/kami/assets/templates/slides.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/kami/assets/templates/social-cards-ko.html
- Network accessline 15
<meta name="author" content="{{작성자}}"> <style> @font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSer - Network accessline 16
<style> @font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); - Network accessline 17
@font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Regular.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Regular.otf") format("opentype"); font-weigh - Network accessline 18
@font-face { font-family: "Source Han Serif K"; src: url("../fonts/SourceHanSerifKR-Medium.otf") format("opentype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/SourceHanSerifKR-Medium.otf") format("opentype"); font-weight:
skills/kami/assets/templates/social-cards.html
- Network accessline 17
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 18
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); font-weight: 400; - Network accessline 19
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W04.ttf") format("truetype"); - Network accessline 24
font-family: "TsangerJinKai02"; src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); - Network accessline 25
src: url("../fonts/TsangerJinKai02-W05.ttf") format("truetype"), url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype"); font-weight: 500; - Network accessline 26
url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/TsangerJinKai02-W05.ttf") format("truetype");
skills/kami/references/brand-profile.md
- Network accessline 14
`python3 scripts/brand_extract.py https://example.com [-o brand.md]` drafts a profile from a public site. It fetches only that page and up to five of its stylesheets from the same host or a subdomain of it, then ranks color, font, and logo - Network accessline 24
| `email` | `{{EMAIL}}` | | `website` | `{{WEBSITE}}`, `{{PERSONAL_SITE}}` | | `github` | `{{GITHUB_URL}}` (expand to full URL: `https://github.com/<value>`) | - Network accessline 25
| `website` | `{{WEBSITE}}`, `{{PERSONAL_SITE}}` | | `github` | `{{GITHUB_URL}}` (expand to full URL: `https://github.com/<value>`) | | `x` | `{{X_URL}}` (expand to `https://x.com/<value>`) | - Network accessline 26
| `github` | `{{GITHUB_URL}}` (expand to full URL: `https://github.com/<value>`) | - Network accessline 27
| `x` | `{{X_URL}}` (expand to `https://x.com/<value>`) |
skills/kami/references/diagrams.md
- Network accessline 339
The semantic-geometry approach draws on [Archify](https://github.com/tt-a1i/archify). - Network accessline 383
<figure> <svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg"> - Network accessline 384
<svg viewBox="0 0 960 460" xmlns="http://www.w3.org/2000/svg"> - Network accessline 692
This capability is inspired by Cathryn Lavery's [diagram-design](https://github.com/cathrynlavery/diagram-design) (a Claude Code skill with 13 editorial diagram types). kami borrowed the **approach** (inline SVG, semantic tokens, complexity
skills/kami/references/mermaid.md
- Network accessline 3
Kami turns Mermaid text into editorial, Kami-styled diagrams using [beautiful-mermaid](https://github.com/lukilabs/beautiful-mermaid) (MIT). Instead - Network accessline 4
[beautiful-mermaid](https://github.com/lukilabs/beautiful-mermaid) (MIT). Instead - Network accessline 11
|------|---------|----------|---------------| | **PDF** | one-pager / long-doc / equity-report etc. | WeasyPrint (no JS) | flowchart, state, sequence, class, ER | | **Browser** | any page running beautiful-mermaid (e.g. <https://agents.craf - Network accessline 13
| **Browser** | any page running beautiful-mermaid (e.g. <https://agents.craft.do/mermaid>) | beautiful-mermaid in the browser | all of the above + xychart | - Network accessline 55
# 1. Render the Mermaid to SVG in any browser running beautiful-mermaid # (e.g. https://agents.craft.do/mermaid). Theme choice does not matter -- - Network accessline 56
# (e.g. https://agents.craft.do/mermaid). Theme choice does not matter --
skills/kami/references/production.md
- Network accessline 369
Use the `npx @marp-team/marp-cli@latest ...` form below for zero-install. For repeat use, install via `npm i -g @marp-team/marp-cli` or `brew install marp-cli` (see [marp-cli docs](https://github.com/marp-team/marp-cli)). Kami's build pipel - Network accessline 983
**Root cause**: WeasyPrint subsets a CID-keyed CFF font (the `.otf` build of Source Han Serif K) into a PDF font that MuPDF and Quartz draw blank; see the [upstream issue](https://github.com/Kozea/WeasyPrint/issues/1593). The same - Network accessline 984
Source Han Serif K) into a PDF font that MuPDF and Quartz draw blank; see the [upstream issue](https://github.com/Kozea/WeasyPrint/issues/1593). The same glyphs as TrueType outlines subset cleanly for every reader. `full_fonts=True` - Network accessline 985
[upstream issue](https://github.com/Kozea/WeasyPrint/issues/1593). The same - Network accessline 1059
svg = m.group(0) if 'xmlns=' not in svg[:200]: svg = svg.replace('<svg ', '<svg xmlns="http://www.w3.org/2000/svg" ', 1) - Network accessline 1060
if 'xmlns=' not in svg[:200]: svg = svg.replace('<svg ', '<svg xmlns="http://www.w3.org/2000/svg" ', 1) with open(f'/tmp/diagram-{i}.svg', 'w') as f: - Network accessline 1061
svg = svg.replace('<svg ', '<svg xmlns="http://www.w3.org/2000/svg" ', 1)
skills/kami/scripts/brand_extract.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 4
Usage: python3 scripts/brand_extract.py https://example.com [-o brand.md] - Network accessline 5
python3 scripts/brand_extract.py https://example.com [-o brand.md] - Network accessline 305
def _fetch(url: str, cap: int) -> str: request = urllib.request.Request(url, headers={"User-Agent": USER_AGENT, "Accept": "*/*"}) - Network accessline 306
request = urllib.request.Request(url, headers={"User-Agent": USER_AGENT, "Accept": "*/*"}) - Network accessline 307
with urllib.request.urlopen(request, timeout=TIMEOUT_SECONDS) as response: - Network accessline 424
def main(argv: list[str] | None = None) -> int: parser = argparse.ArgumentParser(description="Draft a Kami brand profile from a website.") parser.add_argument("url", help="page to scan, e.g. https://example.com") - Network accessline 425
parser = argparse.ArgumentParser(description="Draft a Kami brand profile from a website.") parser.add_argument("url", help="page to scan, e.g. https://example.com") parser.add_argument("-o", "--output", type=Path, help="write the dr - Network accessline 426
parser.add_argument("url", help="page to scan, e.g. https://example.com") - Network accessline 430
url = args.url if "://" in args.url else f"https://{args.url}"
skills/kami/scripts/build.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/kami/scripts/chart.py
- Executable scriptline 1
Executable file - Network accessline 208
title = self.spec.get("title") label = f' aria-label="{_esc(title)}"' if isinstance(title, str) and title else "" head = (f'<svg viewBox="0 0 {self.width} {self.height}" xmlns="http://www.w3.org/2000/svg" ' - Network accessline 209
label = f' aria-label="{_esc(title)}"' if isinstance(title, str) and title else "" head = (f'<svg viewBox="0 0 {self.width} {self.height}" xmlns="http://www.w3.org/2000/svg" ' f'role="img"{label} data-kami-chart="{se - Network accessline 210
head = (f'<svg viewBox="0 0 {self.width} {self.height}" xmlns="http://www.w3.org/2000/svg" '
skills/kami/scripts/check-update.sh
- Executable scriptline 1
#!/usr/bin/env bash - Network accessline 14
LATEST_RELEASE_URL="https://github.com/${REPO}/releases/latest" - Dangerous shell operationline 48
rm -f "${cache_dir}"/update-checked-2* 2>/dev/null # sweep legacy per-day markers - Network accessline 50
command -v curl >/dev/null 2>&1 || exit 0 - Network accessline 51
if [ -n "${KAMI_UPDATE_URL:-}" ]; then remote_ver="$(curl -fsSL --max-time 3 "${KAMI_UPDATE_URL}" 2>/dev/null | tr -d '[:space:]')" else - Network accessline 52
remote_ver="$(curl -fsSL --max-time 3 "${KAMI_UPDATE_URL}" 2>/dev/null | tr -d '[:space:]')" - Network accessline 53
else release_url="$(curl -fsSL --max-time 3 -o /dev/null -w '%{url_effective}' \ "${LATEST_RELEASE_URL}" 2>/dev/null)" - Network accessline 54
release_url="$(curl -fsSL --max-time 3 -o /dev/null -w '%{url_effective}' \ - Network accessline 55
"${LATEST_RELEASE_URL}" 2>/dev/null)"
skills/kami/scripts/checks.py
- Executable scriptline 1
Executable file
skills/kami/scripts/content.py
- Executable scriptline 1
Executable file
skills/kami/scripts/deliver.py
- Executable scriptline 1
Executable file
skills/kami/scripts/diagram_geometry.py
- Executable scriptline 1
Executable file
skills/kami/scripts/ensure-fonts.sh
- Executable scriptline 1
#!/usr/bin/env bash - Dangerous shell operationline 29
rm -f "$FONT_DIR"/*."$TMP_SUFFIX" "$SKILL_FONT_DIR"/*."$TMP_SUFFIX" 2>/dev/null || true - Network accessline 49
MIRROR_SOURCES=( "https://cdn.jsdmirror.com/gh/tw93/Kami@main/assets/fonts" - Network accessline 50
"https://cdn.jsdmirror.com/gh/tw93/Kami@main/assets/fonts" - Network accessline 51
"https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts" - Network accessline 115
local official_url="https://tsanger.cn/download/${cn_name}" - Network accessline 116
echo " Trying: tsanger.cn (official)" if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$official_url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then if check_size "$target.$TMP_SUFFIX" "$MIN_SIZE_CN"; then - Network accessline 117
if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$official_url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then - Dangerous shell operationline 123
rm -f "$target.$TMP_SUFFIX" - Dangerous shell operationline 126
rm -f "$target.$TMP_SUFFIX" - Network accessline 131
local url="$src/$local_name" echo " Trying: $url" if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then - Network accessline 132
echo " Trying: $url" if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then if check_size "$target.$TMP_SUFFIX" "$MIN_SIZE_CN"; then - Network accessline 133
if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then - Dangerous shell operationline 139
rm -f "$target.$TMP_SUFFIX" - Dangerous shell operationline 142
rm -f "$target.$TMP_SUFFIX" - Network accessline 157
local url="$src/$local_name" echo " Trying: $url" if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then - Network accessline 158
echo " Trying: $url" if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then if check_size "$target.$TMP_SUFFIX" "$MIN_SIZE_KO"; then - Network accessline 159
if curl --retry 2 --connect-timeout 15 --max-time 300 -fSL "$url" -o "$target.$TMP_SUFFIX" 2>/dev/null; then - Dangerous shell operationline 165
rm -f "$target.$TMP_SUFFIX" - Dangerous shell operationline 168
rm -f "$target.$TMP_SUFFIX" - Network accessline 230
echo "" echo "Some Source Han Serif K files could not be downloaded. Alternatives:" echo " 1. Download from https://github.com/adobe-fonts/source-han-serif/releases" - Network accessline 231
echo "Some Source Han Serif K files could not be downloaded. Alternatives:" echo " 1. Download from https://github.com/adobe-fonts/source-han-serif/releases" echo " 2. Copy SourceHanSerifKR-Regular.otf and -Medium.otf manually - Network accessline 232
echo " 1. Download from https://github.com/adobe-fonts/source-han-serif/releases"
skills/kami/scripts/ensure_mathjax.sh
- Executable scriptline 1
#!/usr/bin/env bash - Dangerous shell operationline 68
rm -rf -- "$stale_staging" - Dangerous shell operationline 72
rm -f -- "$STAGING_FILE" "$OWNER_FILE" - Dangerous shell operationline 104
rm -rf -- "$STAGING_ROOT" - Dangerous shell operationline 110
rm -f -- "$STAGING_FILE" "$OWNER_FILE" - Dangerous shell operationline 146
rm -f -- "$STAGING_FILE" "$OWNER_FILE"
skills/kami/scripts/font_compat.py
skills/kami/scripts/hangul.py
skills/kami/scripts/highlight.py
- Executable scriptline 1
Executable file
skills/kami/scripts/html_visibility.py
- Executable scriptline 1
Executable file
skills/kami/scripts/lint.py
- Executable scriptline 1
Executable file
skills/kami/scripts/math_render.py
skills/kami/scripts/mathjax-runtime/package-lock.json
- Network accessline 17
"node_modules/@mathjax/mathjax-newcm-font": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/@mathjax/mathjax-newcm-font/-/mathjax-newcm-font-4.1.3.tgz", - Network accessline 18
"version": "4.1.3", "resolved": "https://registry.npmjs.org/@mathjax/mathjax-newcm-font/-/mathjax-newcm-font-4.1.3.tgz", "integrity": "sha512-gzAB3dFHilHX1l5x2xUqRL+1jDQt3Fyza1DkEMVXWC4E8SvsGdlgEza47HYi2WhVcgfkvf4zgUGzuhbq3Pjlew - Network accessline 19
"resolved": "https://registry.npmjs.org/@mathjax/mathjax-newcm-font/-/mathjax-newcm-font-4.1.3.tgz", - Network accessline 23
"node_modules/@mathjax/src": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/@mathjax/src/-/src-4.1.3.tgz", - Network accessline 24
"version": "4.1.3", "resolved": "https://registry.npmjs.org/@mathjax/src/-/src-4.1.3.tgz", "integrity": "sha512-rIrWquuBSoJuoMBdC/1qD+AUHTorlccPicoVy6P2xbUgnuDBpCcpbHtOAsB8L3hdCHtNBg92lF8e3Fz+pkcQbw==", - Network accessline 25
"resolved": "https://registry.npmjs.org/@mathjax/src/-/src-4.1.3.tgz", - Network accessline 35
"node_modules/@xmldom/xmldom": { "version": "0.9.12", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.12.tgz", - Network accessline 36
"version": "0.9.12", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.12.tgz", "integrity": "sha512-5AXjrcMClTryPe9LgZrygpB1lj7s0S9E0+W+AHaVKAVyHanafK86iPSvG5xHVSp/jC+VH1UXu0TAEmY279xH7A==", - Network accessline 37
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.12.tgz", - Network accessline 44
"node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - Network accessline 45
"version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - Network accessline 46
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - Network accessline 53
"node_modules/brace-expansion": { "version": "5.0.9", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", - Network accessline 54
"version": "5.0.9", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", - Network accessline 55
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", - Network accessline 65
"node_modules/commander": { "version": "14.0.3", "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", - Network accessline 66
"version": "14.0.3", "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", - Network accessline 67
"resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", - Network accessline 74
"node_modules/glob": { "version": "13.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - Network accessline 75
"version": "13.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - Network accessline 76
"resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - Network accessline 86
}, "funding": { "url": "https://github.com/sponsors/isaacs" - Network accessline 87
"funding": { "url": "https://github.com/sponsors/isaacs" } - Network accessline 88
"url": "https://github.com/sponsors/isaacs" - Network accessline 91
"node_modules/lru-cache": { "version": "11.5.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - Network accessline 92
"version": "11.5.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", - Network accessline 93
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - Network accessline 100
"node_modules/mhchemparser": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", - Network accessline 101
"version": "4.2.1", "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==", - Network accessline 102
"resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", - Network accessline 106
"node_modules/minimatch": { "version": "10.2.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", - Network accessline 107
"version": "10.2.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", - Network accessline 108
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", - Network accessline 116
}, "funding": { "url": "https://github.com/sponsors/isaacs" - Network accessline 117
"funding": { "url": "https://github.com/sponsors/isaacs" } - Network accessline 118
"url": "https://github.com/sponsors/isaacs" - Network accessline 121
"node_modules/minipass": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - Network accessline 122
"version": "7.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - Network accessline 123
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - Network accessline 130
"node_modules/mj-context-menu": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-1.0.0.tgz", - Network accessline 131
"version": "1.0.0", "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-1.0.0.tgz", "integrity": "sha512-OSgBFQRCVhrZwRa9lhqnKcJU92dd/YXgBjup0uyeuj9bOaVsf4myOyrjU4PfhYkdDk6AqVUTov7v5uFMvIbduA==", - Network accessline 132
"resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-1.0.0.tgz", - Network accessline 139
"node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - Network accessline 140
"version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw= - Network accessline 141
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - Network accessline 145
"node_modules/path-scurry": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - Network accessline 146
"version": "2.0.2", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", - Network accessline 147
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - Network accessline 156
}, "funding": { "url": "https://github.com/sponsors/isaacs" - Network accessline 157
"funding": { "url": "https://github.com/sponsors/isaacs" } - Network accessline 158
"url": "https://github.com/sponsors/isaacs" - Network accessline 161
"node_modules/rimraf": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", - Network accessline 162
"version": "6.1.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==", - Network accessline 163
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", - Network accessline 175
}, "funding": { "url": "https://github.com/sponsors/isaacs" - Network accessline 176
"funding": { "url": "https://github.com/sponsors/isaacs" } - Network accessline 177
"url": "https://github.com/sponsors/isaacs" - Network accessline 180
"node_modules/speech-rule-engine": { "version": "5.0.0-rc.4", "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-5.0.0-rc.4.tgz", - Network accessline 181
"version": "5.0.0-rc.4", "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-5.0.0-rc.4.tgz", "integrity": "sha512-3dFcH2QtQNhtvUUc09TxoaEK4WG03B9Z57krFG9jocrKykKGu35BhIkWr0vgEAxZZomEWkeluff69y/EbYzP4 - Network accessline 182
"resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-5.0.0-rc.4.tgz", - Network accessline 194
"node_modules/wicked-good-xpath": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", - Network accessline 195
"version": "1.3.0", "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==", - Network accessline 196
"resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz",
skills/kami/scripts/mathjax-runtime/package.json
- Executable scriptline 1
Executable file
skills/kami/scripts/mathjax_svg.js
- Executable scriptline 1
#!/usr/bin/env node
skills/kami/scripts/mcp_server.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/kami/scripts/mermaid_normalize.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 4
beautiful-mermaid (https://github.com/lukilabs/beautiful-mermaid) hangs its seven - Network accessline 18
No Node, no network, pure stdlib. Generate the SVG anywhere beautiful-mermaid runs (e.g. https://agents.craft.do/mermaid or your own one-off script), then run this. - Network accessline 19
(e.g. https://agents.craft.do/mermaid or your own one-off script), then run this.
skills/kami/scripts/optional_deps.py
- Executable scriptline 1
Executable file - Dangerous shell operationline 28
"sudo apt-get install -y libcairo2 libpango-1.0-0 libpangoft2-1.0-0 libharfbuzz0b " - Dangerous shell operationline 29
"(Debian/Ubuntu), or `sudo dnf install cairo pango harfbuzz` (Fedora/RHEL)" - Possible obfuscationline 145
if signature in {b"\x00\x01\x00\x00", b"OTTO", b"true", b"typ1"}:
skills/kami/scripts/package.json
- Executable scriptline 1
Executable file
skills/kami/scripts/render.py
skills/kami/scripts/shared.py
- Executable scriptline 1
Executable file - Network accessline 49
) GENERIC_AGENT_INSTALL_COMMAND = f"npx skills add {PUBLIC_REPO} -a claude-code codex cursor -g -y" CLAUDE_DESKTOP_PACKAGE_URL = "https://github.com/tw93/kami/releases/latest/download/kami.zip" - Network accessline 51
CLAUDE_DESKTOP_PACKAGE_URL = "https://github.com/tw93/kami/releases/latest/download/kami.zip" - Access to secretsline 74
[Credential-related source omitted] - Access to secretsline 83
[Credential-related source omitted] - Access to secretsline 89
[Credential-related source omitted]
skills/kami/scripts/site_facts.py
- Executable scriptline 1
Executable file
skills/kami/scripts/tokens.py
- Executable scriptline 1
Executable file
skills/kami/scripts/verify.py
skills/kami/scripts/visual.py
- Executable scriptline 1
Executable file
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 6 facts
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionkami/scripts/chart.py:210High confidence
- Contacts cdn.jsdmirror.com, which SKILL.md, the README and the plugin manifest do not mentionkami/scripts/ensure-fonts.sh:50High confidence
- Contacts cdn.jsdelivr.net, which SKILL.md, the README and the plugin manifest do not mentionkami/scripts/ensure-fonts.sh:51High confidence
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionkami/scripts/chart.py:210High confidence
- Contacts cdn.jsdmirror.com, which SKILL.md, the README and the plugin manifest do not mentionkami/scripts/ensure-fonts.sh:50High confidence
- Contacts cdn.jsdelivr.net, which SKILL.md, the README and the plugin manifest do not mentionkami/scripts/ensure-fonts.sh:51High confidence
Signal confidence: 252 facts
- Network access in prose of documentationkami/assets/fonts/LICENSE-JetBrainsMono.txt:1Low confidence
- Network access in prose of documentationkami/assets/fonts/LICENSE-JetBrainsMono.txt:3Low confidence
- Network access in prose of documentationkami/assets/fonts/LICENSE-JetBrainsMono.txt:5Low confidence
- Network access in prose of documentationkami/assets/fonts/LICENSE-SourceHanSerifK.txt:1Low confidence
- Network access in prose of documentationkami/assets/fonts/LICENSE-SourceHanSerifK.txt:2Low confidence
- Network access in prose of documentationkami/assets/fonts/LICENSE-SourceHanSerifK.txt:9Low confidence
- Network access in prose of documentationkami/assets/fonts/LICENSE-SourceHanSerifK.txt:10Low confidence
- Network access in prose of documentationkami/assets/fonts/LICENSE-SourceHanSerifK.txt:11Low confidence
- Executable script in code of a file that runskami/assets/templates/slides-en.py:1High confidence
- Executable script in code of a file that runskami/assets/templates/slides.py:1High confidence
- Network access in prose of documentationkami/references/brand-profile.md:14Low confidence
- Network access in prose of documentationkami/references/brand-profile.md:24Low confidence
- Network access in prose of documentationkami/references/brand-profile.md:25Low confidence
- Network access in prose of documentationkami/references/brand-profile.md:26Low confidence
- Network access in prose of documentationkami/references/brand-profile.md:27Low confidence
- Network access in prose of documentationkami/references/diagrams.md:339Low confidence
- Network access in code of documentationkami/references/diagrams.md:383Low confidence
- Network access in code of documentationkami/references/diagrams.md:384Low confidence
- Network access in prose of documentationkami/references/diagrams.md:692Low confidence
- Network access in prose of documentationkami/references/mermaid.md:3Low confidence
- Network access in prose of documentationkami/references/mermaid.md:4Low confidence
- Network access in prose of documentationkami/references/mermaid.md:11Low confidence
- Network access in prose of documentationkami/references/mermaid.md:13Low confidence
- Network access in code of documentationkami/references/mermaid.md:55Low confidence
- Network access in code of documentationkami/references/mermaid.md:56Low confidence
- Network access in prose of documentationkami/references/production.md:369Low confidence
- Network access in prose of documentationkami/references/production.md:983Low confidence
- Network access in prose of documentationkami/references/production.md:984Low confidence
- Network access in prose of documentationkami/references/production.md:985Low confidence
- Network access in code of documentationkami/references/production.md:1059Low confidence
- Network access in code of documentationkami/references/production.md:1060Low confidence
- Network access in code of documentationkami/references/production.md:1061Low confidence
- Executable script in code of a file that runskami/scripts/brand_extract.py:1High confidence
- Network access in prose of a file that runskami/scripts/brand_extract.py:4Low confidence
- Network access in prose of a file that runskami/scripts/brand_extract.py:5Low confidence
- Network access in code of a file that runskami/scripts/brand_extract.py:305High confidence
- Network access in code of a file that runskami/scripts/brand_extract.py:306High confidence
- Network access in code of a file that runskami/scripts/brand_extract.py:307High confidence
- Network access in code of a file that runskami/scripts/brand_extract.py:424High confidence
- Network access in code of a file that runskami/scripts/brand_extract.py:425High confidence
- Network access in code of a file that runskami/scripts/brand_extract.py:426High confidence
- Network access in code of a file that runskami/scripts/brand_extract.py:430High confidence
- Executable script in code of a file that runskami/scripts/build.py:1High confidence
- Executable script in prose of a file that runskami/scripts/chart.py:1Low confidence
- Network access in code of a file that runskami/scripts/chart.py:208High confidence
- Network access in code of a file that runskami/scripts/chart.py:209High confidence
- Network access in code of a file that runskami/scripts/chart.py:210High confidence
- Executable script in code of a file that runskami/scripts/check-update.sh:1High confidence
- Network access in code of a file that runskami/scripts/check-update.sh:14High confidence
- Dangerous shell operation in code of a file that runskami/scripts/check-update.sh:48High confidence
and 202 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md plugins/kami/skills/kami/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md plugins/kami/skills/kami/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md plugins/kami/skills/kami/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md plugins/kami/skills/kami/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/tw93-kami/)