#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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

View on GitHubAdd to my skills

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>/
12.3kGitHub stars
160stars in 7 days
2skills in this repository
134commits in 30 days

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

Aug 2, 2026Nov 7, 202612,344

Individual skills in this repository

  • kami plugins/kami/skills/kami
  • kami skills/kami

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 tokens

Always available to the agent

SKILL.md

4,944 tokens

When the skill is activated

Reference documents

79,514 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. 1 · Lock the contract
  2. 2 · Sources, materials, and content
  3. 3 · Read the right amount
  4. 4 · Fill the template
  5. 5 · Deliver
  6. Feedback protocol
  7. When not to use this skill

Scripts executed separately

  • assets/templates/slides-en.py
  • assets/templates/slides.py
  • scripts/brand_extract.py
  • scripts/build.py
  • scripts/chart.py
  • scripts/check-update.sh
  • scripts/checks.py
  • scripts/content.py
  • scripts/deliver.py
  • scripts/diagram_geometry.py
  • scripts/ensure-fonts.sh
  • scripts/ensure_mathjax.sh
  • scripts/font_compat.py
  • scripts/hangul.py
  • scripts/highlight.py
  • scripts/html_visibility.py
  • scripts/lint.py
  • scripts/math_render.py
  • scripts/mathjax-runtime/package.json
  • scripts/mathjax_svg.js
  • scripts/mcp_server.py
  • scripts/mermaid_normalize.py
  • scripts/optional_deps.py
  • scripts/package.json
  • scripts/render.py
  • scripts/shared.py
  • scripts/site_facts.py
  • scripts/tokens.py
  • scripts/verify.py
  • scripts/visual.py

Files

  • ../../../../.claude-plugin/marketplace.jsonasset452 bytes
  • ../../.claude-plugin/plugin.jsonasset352 bytes
  • CHEATSHEET.mddoc20,102 bytes
  • LICENSEasset1,061 bytes
  • SKILL.mdcore20,951 bytes
  • SKILL.mdcore20,951 bytes
  • SKILL.mdcore20,951 bytes
  • SKILL.mdcore20,951 bytes
  • SKILL.mdcore20,951 bytes
  • VERSIONasset7 bytes
  • assets/diagrams/architecture-board.htmlasset22,009 bytes
  • assets/diagrams/architecture.htmlasset10,798 bytes
  • assets/diagrams/bar-chart.htmlasset8,025 bytes
  • assets/diagrams/candlestick.htmlasset11,570 bytes
  • assets/diagrams/class.htmlasset9,485 bytes
  • assets/diagrams/donut-chart.htmlasset6,879 bytes
  • assets/diagrams/er.htmlasset10,078 bytes
  • assets/diagrams/flowchart.htmlasset8,983 bytes
  • assets/diagrams/layer-stack.htmlasset8,980 bytes
  • assets/diagrams/line-chart.htmlasset9,877 bytes
  • assets/diagrams/quadrant.htmlasset9,402 bytes
  • assets/diagrams/sequence.htmlasset7,297 bytes
  • assets/diagrams/src/class.mmdasset241 bytes
  • assets/diagrams/src/er.mmdasset121 bytes
  • assets/diagrams/src/sequence.mmdasset184 bytes
  • assets/diagrams/state-machine.htmlasset10,507 bytes
  • assets/diagrams/swimlane.htmlasset9,751 bytes
  • assets/diagrams/timeline.htmlasset8,081 bytes
  • assets/diagrams/tree.htmlasset11,105 bytes
  • assets/diagrams/venn.htmlasset6,644 bytes
  • assets/diagrams/waterfall.htmlasset8,895 bytes
  • assets/fonts/JetBrainsMono.woff2asset55,672 bytes
  • assets/fonts/LICENSE-JetBrainsMono.txtdoc4,399 bytes
  • assets/fonts/LICENSE-SourceHanSerifK.txtdoc5,120 bytes
  • assets/images/logo.svgasset441 bytes
  • assets/templates/changelog-en.htmlasset6,476 bytes
  • assets/templates/changelog-ko.htmlasset7,563 bytes
  • assets/templates/changelog.htmlasset7,029 bytes
  • assets/templates/equity-report-en.htmlasset13,811 bytes
  • assets/templates/equity-report-ko.htmlasset16,020 bytes
  • assets/templates/equity-report.htmlasset15,188 bytes
  • assets/templates/landing-page-en.htmlasset30,411 bytes
  • assets/templates/landing-page-ko.htmlasset30,287 bytes
  • assets/templates/landing-page-llms-full.txt.exampleasset2,450 bytes
  • assets/templates/landing-page-llms.txt.exampleasset1,468 bytes
  • assets/templates/landing-page-robots.txt.exampleasset1,128 bytes
  • assets/templates/landing-page-sitemap.xml.exampleasset2,403 bytes
  • assets/templates/landing-page-vercel.json.exampleasset1,109 bytes
  • assets/templates/landing-page.htmlasset29,190 bytes
  • assets/templates/letter-en.htmlasset7,331 bytes
  • assets/templates/letter-ko.htmlasset8,960 bytes
  • assets/templates/letter.htmlasset8,756 bytes
  • assets/templates/long-doc-en.htmlasset14,766 bytes
  • assets/templates/long-doc-ko.htmlasset16,986 bytes
  • assets/templates/long-doc.htmlasset21,242 bytes
  • assets/templates/marp/slides-marp-en.cssasset4,809 bytes
  • assets/templates/marp/slides-marp-en.mddoc3,272 bytes
  • assets/templates/marp/slides-marp.cssasset5,880 bytes
  • assets/templates/marp/slides-marp.mddoc3,295 bytes
  • assets/templates/one-pager-en.htmlasset11,371 bytes
  • assets/templates/one-pager-ko.htmlasset13,428 bytes
  • assets/templates/one-pager.htmlasset13,136 bytes
  • assets/templates/portfolio-en.htmlasset19,129 bytes
  • assets/templates/portfolio-ko.htmlasset20,522 bytes
  • assets/templates/portfolio.htmlasset24,339 bytes
  • assets/templates/resume-en.htmlasset25,123 bytes
  • assets/templates/resume-ko.htmlasset27,742 bytes
  • assets/templates/resume.htmlasset27,380 bytes
  • assets/templates/slides-en.pyruns13,151 bytes
  • assets/templates/slides-weasy-en.htmlasset7,799 bytes
  • assets/templates/slides-weasy-ko.htmlasset9,426 bytes
  • assets/templates/slides-weasy.htmlasset13,072 bytes
  • assets/templates/slides.pyruns14,240 bytes
  • assets/templates/social-cards-en.htmlasset9,406 bytes
  • assets/templates/social-cards-ko.htmlasset10,023 bytes
  • assets/templates/social-cards.htmlasset10,021 bytes
  • references/anti-patterns.mddoc12,947 bytes
  • references/brand-profile.mddoc7,439 bytes
  • references/brand.example.mddoc2,954 bytes
  • references/checks_thresholds.jsonasset546 bytes
  • references/deck-preflight.mddoc3,443 bytes
  • references/design.mddoc107,077 bytes
  • references/diagrams.mddoc45,285 bytes
  • references/mermaid-theme.jsonasset1,119 bytes
  • references/mermaid.mddoc4,707 bytes
  • references/production.mddoc51,236 bytes
  • references/resume-writing.mddoc15,948 bytes
  • references/schemas/changelog.jsonasset1,714 bytes
  • references/schemas/equity-report.jsonasset3,012 bytes
  • references/schemas/landing-page.jsonasset6,053 bytes
  • references/schemas/letter.jsonasset1,466 bytes
  • references/schemas/long-doc.jsonasset2,527 bytes
  • references/schemas/one-pager.jsonasset1,592 bytes
  • references/schemas/portfolio.jsonasset2,560 bytes
  • references/schemas/resume.jsonasset3,459 bytes
  • references/schemas/slides.jsonasset2,518 bytes
  • references/schemas/social-cards.jsonasset1,960 bytes
  • references/social-palettes.jsonasset1,672 bytes
  • references/tokens.jsonasset579 bytes
  • references/writing.mddoc41,141 bytes
  • scripts/brand_extract.pyruns17,887 bytes
  • scripts/build.pyruns11,104 bytes
  • scripts/chart.pyruns33,844 bytes
  • scripts/check-update.shruns2,894 bytes
  • scripts/checks.pyruns30,202 bytes
  • scripts/content.pyruns28,433 bytes
  • scripts/deliver.pyruns13,973 bytes
  • scripts/diagram_geometry.pyruns8,427 bytes
  • scripts/ensure-fonts.shruns8,899 bytes
  • scripts/ensure_mathjax.shruns4,672 bytes
  • scripts/font_compat.pyruns5,703 bytes
  • scripts/hangul.pyruns4,342 bytes
  • scripts/highlight.pyruns5,678 bytes
  • scripts/html_visibility.pyruns45,738 bytes
  • scripts/lint.pyruns35,195 bytes
  • scripts/math_render.pyruns26,307 bytes
  • scripts/mathjax-runtime/package-lock.jsonasset7,371 bytes
  • scripts/mathjax-runtime/package.jsonruns176 bytes
  • scripts/mathjax_svg.jsruns4,646 bytes
  • scripts/mcp_server.pyruns21,181 bytes
  • scripts/mermaid_normalize.pyruns14,492 bytes
  • scripts/optional_deps.pyruns11,207 bytes
  • scripts/package.jsonruns25 bytes
  • scripts/render.pyruns7,037 bytes
  • scripts/shared.pyruns14,078 bytes
  • scripts/site_facts.pyruns16,739 bytes
  • scripts/tokens.pyruns7,129 bytes
  • scripts/verify.pyruns23,824 bytes
  • scripts/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 GitHub

Skills 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

  1. #124 on Oct 29
  2. #126 from Oct 30 to Oct 31
  3. #125 from Nov 1 to Nov 2
  4. #126 from Nov 3 to Nov 4
  5. #127 from Nov 5 to Nov 6
  6. #128 since Nov 7
39 earlier periods
  1. #114 on Aug 2
  2. #114 on Aug 8
  3. #115 on Aug 9
  4. #118 from Aug 10 to Aug 11
  5. #119 from Aug 12 to Aug 15
  6. #118 on Aug 16
  7. #119 from Aug 17 to Aug 18
  8. #118 from Aug 19 to Aug 21
  9. #117 on Aug 22
  10. #118 from Aug 23 to Aug 24
  11. #119 on Aug 25
  12. #120 from Aug 26 to Aug 29
  13. #119 from Aug 30 to Aug 31
  14. #118 from Sep 1 to Sep 2
  15. #119 on Sep 3
  16. #118 on Sep 4
  17. #119 on Sep 5
  18. #118 on Sep 6
  19. #119 on Sep 7
  20. #120 on Sep 8
  21. #119 on Sep 9
  22. #117 on Sep 10
  23. #116 from Sep 11 to Sep 15
  24. #115 from Sep 16 to Sep 17
  25. #117 from Sep 18 to Sep 19
  26. #118 from Sep 20 to Sep 25
  27. #117 on Sep 26
  28. #118 from Sep 27 to Sep 28
  29. #120 on Sep 29
  30. #119 on Sep 30
  31. #120 from Oct 1 to Oct 4
  32. #121 on Oct 5
  33. #119 on Oct 6
  34. #121 from Oct 7 to Oct 13
  35. #123 from Oct 14 to Oct 15
  36. #124 from Oct 16 to Oct 17
  37. #125 from Oct 18 to Oct 20
  38. #126 from Oct 21 to Oct 25
  39. #125 on Oct 28

Before you install

Network or broad shell

Automated 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:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/kami/skills/kami/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/kami/skills/kami/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/kami/skills/kami/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/kami/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/kami/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/kami/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/kami/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 879 signals by file

.claude-plugin/marketplace.json

  • Network accessline 13
    "category": "documents",       "source": "./plugins/kami",       "homepage": "https://github.com/tw93/kami"
  • Network accessline 14
    "source": "./plugins/kami",       "homepage": "https://github.com/tw93/kami"     }
  • Network accessline 15
    "homepage": "https://github.com/tw93/kami"

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="{&quot;categories&quot;:[&quot;2021&quot;,&quot;2022&quot;,&quot;2023&quot;,&quot;2024&quot;],&quot;series&quot;:[{&quot;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="{&quot;points&quot;:[{&quot;close&quot;:126,&quot;high&quot;:128,&quot;label&quot;:&quot;{{D1}}&quot;,&quot;low&quot;: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="{&quot;center_label&quot;:&quot;{{Center label}}&quot;,&quot;items&quot;:[{&quot;label&quot;:&quot;{{Category A}}&quot;,&quot;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="{&quot;categories&quot;:[&quot;Jan&quot;,&quot;Feb&quot;,&quot;Mar&quot;,&quot;Apr&quot;,&quot;May&quot;,&quot;Jun&quot;,&quot;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="{&quot;items&quot;:[{&quot;label&quot;:&quot;{{Start}}&quot;,&quot;total&quot;:true,&quot;value&quot;:120},{&quot;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> &middot;
  • Network accessline 1021
    <!-- {{FOOTER_LINKS}}, middot-separated editorial links, e.g.:         <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> &middot;         <a href="mailto:...">Email</a> &middot;
  • Network accessline 1022
    <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> &middot;

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> &middot;
  • Network accessline 1035
    <!-- {{FOOTER_LINKS}}, middot-separated editorial links, e.g.:         <a href="https://x.com/..." target="_blank" rel="noopener">트위터</a> &middot;         <a href="mailto:...">이메일</a> &middot;
  • Network accessline 1036
    <a href="https://x.com/..." target="_blank" rel="noopener">트위터</a> &middot;

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> &middot;
  • Network accessline 1025
    <!-- {{FOOTER_LINKS}},居中点分隔链接,例如:         <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> &middot;         <a href="mailto:...">邮箱</a> &middot;
  • Network accessline 1026
    <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> &middot;

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 33
    [Credential-related source omitted]
  • Access to secretsline 39
    [Credential-related source omitted]
  • Access to secretsline 40
    [Credential-related source omitted]
  • Possible obfuscationline 108
    font.sfntVersion = "\x00\x01\x00\x00"

plugins/kami/skills/kami/scripts/hangul.py

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 19
    JOINER = "<U+2060>"

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

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 462
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 56
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 513
    [Credential-related source omitted]

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="{&quot;categories&quot;:[&quot;2021&quot;,&quot;2022&quot;,&quot;2023&quot;,&quot;2024&quot;],&quot;series&quot;:[{&quot;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="{&quot;points&quot;:[{&quot;close&quot;:126,&quot;high&quot;:128,&quot;label&quot;:&quot;{{D1}}&quot;,&quot;low&quot;: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="{&quot;center_label&quot;:&quot;{{Center label}}&quot;,&quot;items&quot;:[{&quot;label&quot;:&quot;{{Category A}}&quot;,&quot;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="{&quot;categories&quot;:[&quot;Jan&quot;,&quot;Feb&quot;,&quot;Mar&quot;,&quot;Apr&quot;,&quot;May&quot;,&quot;Jun&quot;,&quot;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="{&quot;items&quot;:[{&quot;label&quot;:&quot;{{Start}}&quot;,&quot;total&quot;:true,&quot;value&quot;:120},{&quot;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> &middot;
  • Network accessline 1021
    <!-- {{FOOTER_LINKS}}, middot-separated editorial links, e.g.:         <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> &middot;         <a href="mailto:...">Email</a> &middot;
  • Network accessline 1022
    <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> &middot;

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> &middot;
  • Network accessline 1035
    <!-- {{FOOTER_LINKS}}, middot-separated editorial links, e.g.:         <a href="https://x.com/..." target="_blank" rel="noopener">트위터</a> &middot;         <a href="mailto:...">이메일</a> &middot;
  • Network accessline 1036
    <a href="https://x.com/..." target="_blank" rel="noopener">트위터</a> &middot;

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> &middot;
  • Network accessline 1025
    <!-- {{FOOTER_LINKS}},居中点分隔链接,例如:         <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> &middot;         <a href="mailto:...">邮箱</a> &middot;
  • Network accessline 1026
    <a href="https://x.com/..." target="_blank" rel="noopener">Twitter</a> &middot;

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 33
    [Credential-related source omitted]
  • Access to secretsline 39
    [Credential-related source omitted]
  • Access to secretsline 40
    [Credential-related source omitted]
  • Possible obfuscationline 108
    font.sfntVersion = "\x00\x01\x00\x00"

skills/kami/scripts/hangul.py

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 19
    JOINER = "<U+2060>"

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

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 462
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 56
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 513
    [Credential-related source omitted]

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
Signal confidence: 252 facts

and 202 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md plugins/kami/skills/kami/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md plugins/kami/skills/kami/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md plugins/kami/skills/kami/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard 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.

tw93/Kami: #128 on hotskills, 12.3k stars

[![tw93/Kami on hotskills](https://hotskills.dev/badge/tw93-kami.svg)](https://hotskills.dev/skill/tw93-kami/)