Not in the top 1,000 by GitHub stars

SupportPages-io/wtfm

WTFM: Write the F***ing Manual. A plugin for your coding agent that writes your user docs, screenshots included.

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

engine/detect-project/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

e6c0b52f5379 → e6c0b52f5379

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → e6c0b52f5379

No earlier version was observed for comparison.

Compare on GitHub

engine/generate-illustrated-article/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

e6c0b52f5379 → e6c0b52f5379

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → e6c0b52f5379

No earlier version was observed for comparison.

Compare on GitHub

scripts/skills/supportpages/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

e6c0b52f5379 → e6c0b52f5379

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → e6c0b52f5379

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit e6c0b52f53793d2a45e6268a449e67c7d976d755

git clone --filter=blob:none --no-checkout https://github.com/SupportPages-io/wtfm.git .hotskills/supportpages-io-wtfm && git -C .hotskills/supportpages-io-wtfm checkout --detach e6c0b52f53793d2a45e6268a449e67c7d976d755 # Copy each selected skill directory from .hotskills/supportpages-io-wtfm into .claude/skills/<skill-name>/
121GitHub stars
4stars in 7 days
3skills in this repository
40commits in 30 days

Heat

4.5
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 5, 2026121

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

detect-project

When your agent uses it

One-shot project setup for the mockup tools (generate-illustrated-article, generate-walkthrough). Detects the CSS framework, design tokens, brand colours, and fonts, compiles or synthesises a CSS bundle, maps the project structure (framework, routes/controllers/views locations, layouts, shared chrome), and recommends a provider-agnostic low/medium/high mockup model tier so generated output visually matches the real app without overspending on straightforward projects. Terminal (CLI/TUI) apps get a vendored WebTUI terminal stylesheet and a command index instead; mobile apps (React Native incl. Expo, and Flutter) get a vendored Framework7 device-frame stylesheet re-tinted to the app's brand, and a screen index; desktop apps (Electron, Tauri) keep their real compiled CSS and gain a vendored OS-window frame stylesheet; web/canvas games (vanilla canvas, Phaser, PixiJS) keep their real compiled CSS and gain a vendored playfield frame plus a per-scene draw anatomy extracted from the game's render code. The app type is auto-classified from the repo when no app_type hint is given (an explicit hint always wins; on ambiguous multi-surface repos the model adjudicates the product's primary surface from in-repo evidence, diverting from the classifier only when the evidence is one-sided). Use when the user asks to set up / detect / refresh the project's branding or structure, choose an appropriate model tier for mockup generation, or when mockup output doesn't look like the real app. One run per project — result cached in `./.rtfm/`. (Formerly named detect-branding.)

What it loads into context

Frontmatter

887 tokens

Always available to the agent

SKILL.md

34,083 tokens

When the skill is activated

Reference documents

1,960 tokens

Loaded on request

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

The playbook

  1. STEP 0 — Bootstrap
  2. STEP 1 — Static baseline detection
  3. STEP 2 — In-session refinement (YOU do this, not a subprocess)
  4. STEP 3 — Compile the project's real CSS
  5. STEP 4 — Finalise `branding.json`
  6. STEP 4.5 — Project structure map
  7. STEP 4.6 — Mandatory structure enrichment
  8. STEP 4.7 — CSS health gate (deterministic — do not skip)
  9. STEP 5 — Print a summary the user can sanity-check
  10. STEP T1 — Identify the CLI surface (YOU do this; source-only)
  11. STEP T2 — Assemble branding.css from the vendored WebTUI bundle
  12. STEP T3 — Write branding.json
  13. STEP T4 — Structure map: command_index instead of route_index
  14. Terminal summary
  15. STEP M1 — Identify the mobile surface (YOU do this; source-only)
  16. STEP M2 — Extract the app's brand (YOU do this; the mobile analogue of STEP 2)
  17. STEP M3 — Assemble branding.css (vendored bundle + generated brand-overrides.css)
  18. STEP M4 — Write branding.json
  19. STEP M5 — Structure map: screen_index + app_shell instead of route_index
  20. Mobile summary
  21. STEP D1 — Identify the desktop surface (YOU do this; source-only)
  22. STEP D2 — Window frame + desktop keys (after STEPS 1–4)
  23. STEP D3 — Structure map: route_index + desktop_metadata + app_shell
  24. Desktop summary
  25. STEP W1 — Identify the Win32 surface (YOU do this; source-only)
  26. STEP W2 — Assemble branding.css from the vendored bundles
  27. STEP W3 — Write branding.json
  28. STEP W4 — Structure map: dialog_index instead of route_index
  29. Win32 summary
  30. STEP C1 — Identify the macOS surface (YOU do this; source-only)
  31. STEP C2 — Assemble branding.css from the vendored bundles
  32. STEP C3 — Write branding.json
  33. STEP C4 — Structure map: view_index instead of route_index
  34. macOS summary
  35. STEP G1 — Identify the game surface (YOU do this; source-only)
  36. STEP G2 — Playfield frame + game keys (after STEPS 1–4)
  37. STEP G3 — Structure map: route_index + scene_anatomy + game_metadata + app_shell
  38. Game summary
  39. STEP 6 — Codebase analysis (MANDATORY when RTFM_ANALYZE=full)
  40. Notes for the user

Scripts executed separately

  • assets/macosui/LICENSE-puppertino.txt
  • assets/mobileui/f7-color-theme.mjs
  • package.json
  • scripts/apply_runtime_profiles.js
  • scripts/check_css_health.js
  • scripts/check_project_map.js
  • scripts/check_runtime_coverage.js
  • scripts/check_runtime_recipe_quality.js
  • scripts/classify_app_type.sh
  • scripts/classify_surface.sh
  • scripts/classify_workspace.js
  • scripts/compile_css.sh
  • scripts/detect_static.js
  • scripts/detect_structure.js
  • scripts/include_census.js
  • scripts/json_get.js
  • scripts/merge_json.js
  • scripts/recommend_model_tier.js
  • scripts/resolve_route_chains.js
  • scripts/run_css_build.sh
  • scripts/sanitize_css.js
  • scripts/test_classify_surface.js
  • scripts/test_node_helpers.js
  • scripts/test_recommend_model_tier.js
  • scripts/test_resolve_route_chains.js
  • scripts/test_runtime_coverage.js
  • scripts/test_runtime_recipe_quality.js
  • scripts/theme_overrides.js
  • scripts/write_branding.js

Files

  • ../../.claude-plugin/marketplace.jsonasset603 bytes
  • README.mddoc8,544 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • SKILL.mdcore133,584 bytes
  • assets/desktop/desktop-frame.cssasset14,731 bytes
  • assets/game/game-frame.cssasset5,028 bytes
  • assets/macosui/LICENSE-puppertino.txtruns1,069 bytes
  • assets/macosui/VERSIONS.txtdoc86 bytes
  • assets/macosui/fonts.cssasset129,654 bytes
  • assets/macosui/macos-frame.cssasset12,416 bytes
  • assets/macosui/puppertino.cssasset36,024 bytes
  • assets/mobileui/LICENSE-fonts.txtdoc755 bytes
  • assets/mobileui/LICENSE-framework7.txtdoc2,658 bytes
  • assets/mobileui/VERSIONS.txtdoc436 bytes
  • assets/mobileui/device-frame.cssasset8,914 bytes
  • assets/mobileui/f7-color-theme.mjsruns75,616 bytes
  • assets/mobileui/f7-icons-names.jsonasset24,414 bytes
  • assets/mobileui/fonts.cssasset115,181 bytes
  • assets/mobileui/framework7-components.cssasset143,482 bytes
  • assets/mobileui/framework7-core.cssasset166,421 bytes
  • assets/mobileui/icons.cssasset144,168 bytes
  • assets/mobileui/md3-defaults.cssasset3,132 bytes
  • assets/mobileui/platforms.jsonasset1,005 bytes
  • assets/tailwind-fallback.cssasset71,444 bytes
  • assets/webtui/LICENSE-webtui.txtdoc1,429 bytes
  • assets/webtui/VERSIONS.txtdoc189 bytes
  • assets/webtui/terminal-frame.cssasset5,613 bytes
  • assets/webtui/theme-catppuccin.cssasset10,482 bytes
  • assets/webtui/theme-everforest.cssasset8,562 bytes
  • assets/webtui/theme-gruvbox.cssasset6,826 bytes
  • assets/webtui/theme-nord.cssasset8,845 bytes
  • assets/webtui/theme-vitesse.cssasset6,242 bytes
  • assets/webtui/themes.jsonasset837 bytes
  • assets/webtui/webtui-core.cssasset39,377 bytes
  • assets/win32ui/7css.cssasset83,803 bytes
  • assets/win32ui/LICENSE-7css.txtdoc1,094 bytes
  • assets/win32ui/VERSIONS.txtdoc43 bytes
  • assets/win32ui/win32-frame.cssasset8,746 bytes
  • package-lock.jsonasset203 bytes
  • package.jsonruns516 bytes
  • scripts/apply_runtime_profiles.jsruns21,794 bytes
  • scripts/check_css_health.jsruns19,969 bytes
  • scripts/check_project_map.jsruns8,641 bytes
  • scripts/check_runtime_coverage.jsruns19,094 bytes
  • scripts/check_runtime_recipe_quality.jsruns10,400 bytes
  • scripts/classify_app_type.shruns14,835 bytes
  • scripts/classify_surface.shruns5,347 bytes
  • scripts/classify_workspace.jsruns1,588 bytes
  • scripts/compile_css.shruns19,667 bytes
  • scripts/detect_static.jsruns28,449 bytes
  • scripts/detect_structure.jsruns7,237 bytes
  • scripts/include_census.jsruns27,174 bytes
  • scripts/json_get.jsruns5,293 bytes
  • scripts/merge_json.jsruns1,691 bytes
  • scripts/recommend_model_tier.jsruns9,607 bytes
  • scripts/resolve_route_chains.jsruns7,707 bytes
  • scripts/run_css_build.shruns1,728 bytes
  • scripts/sanitize_css.jsruns2,411 bytes
  • scripts/test_classify_surface.jsruns6,117 bytes
  • scripts/test_node_helpers.jsruns9,359 bytes
  • scripts/test_recommend_model_tier.jsruns5,930 bytes
  • scripts/test_resolve_route_chains.jsruns13,455 bytes
  • scripts/test_runtime_coverage.jsruns16,380 bytes
  • scripts/test_runtime_recipe_quality.jsruns13,612 bytes
  • scripts/theme_overrides.jsruns7,250 bytes
  • scripts/write_branding.jsruns5,022 bytes
  • ../../plugin/.claude-plugin/icon.pngasset30,718 bytes
  • ../../plugin/.claude-plugin/plugin.jsonasset734 bytes
  • ../../plugin/hooks/hooks.jsonasset503 bytes
  • ../../plugin/hooks/hooks.jsonasset503 bytes
  • ../../plugin/hooks/hooks.jsonasset503 bytes
  • ../../plugin/hooks/hooks.jsonasset503 bytes
Read SKILL.md

You are detecting and compiling the visual identity AND structure of the software project at the path the user invoked this skill for (default: cwd). The output is a unified project-level cache at `./.rtfm/` that the article + walkthrough skills consume to make their mockups look like the actual product and to skip re-discovering the project's layout on every run.

CODEBASE: `$codebase_path` (defaults to `.` if blank)

## STEP 0 — Bootstrap

```bash
echo "rtfm-skills v$(cat ${RTFM_SKILLS_DIR:-$HOME/.rtfm-skills}/VERSION 2>/dev/null || echo '?') — detect-project"
RTFM_WORKSPACE="${RTFM_WORKSPACE:-$(${RTFM_SKILLS_DIR:-$HOME/.rtfm-skills}/generate-illustrated-article/scripts/resolve_workspace.sh)}"
cd "$RTFM_WORKSPACE" || exit 1
echo "workspace=$RTFM_WORKSPACE"
echo "related_repos:"; bash ${RTFM_SKILLS_DIR:-$HOME/.rtfm-skills}/generate-illustrated-article/scripts/related_repos.sh
CODEBASE="${codebase_path:-.}"
if [ ! -d "$CODEBASE" ]; then
View the complete source on GitHub

Skills included

  • detect-project
  • generate-illustrated-article
  • supportpages

Repository facts

License
Apache-2.0
Created
Sep 25, 2026
Last pushed
Nov 5, 2026
Forks
10
Open issues
1
Project activity
Active

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 291 notes
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • engine/detect-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 329 signals by file

.claude-plugin/marketplace.json

  • Network accessline 1
    {   "name": "supportpages",   "owner": { "name": "SupportPages.io", "url": "https://supportpages.io" },
  • Network accessline 2
    "name": "supportpages",   "owner": { "name": "SupportPages.io", "url": "https://supportpages.io" },   "description": "WTFM by SupportPages.io: your coding agent writes the user docs from your codebase, screenshots included.",
  • Network accessline 3
    "owner": { "name": "SupportPages.io", "url": "https://supportpages.io" },
  • Network accessline 7
    "name": "wtfm",       "description": "Your coding agent writes the user docs from your codebase, screenshots included.",       "source": { "source": "url", "url": "https://github.com/SupportPages-io/wtfm.git", "ref": "claude-plugin" },
  • Network accessline 8
    "description": "Your coding agent writes the user docs from your codebase, screenshots included.",       "source": { "source": "url", "url": "https://github.com/SupportPages-io/wtfm.git", "ref": "claude-plugin" },       "homepage": "https:/
  • Network accessline 9
    "source": { "source": "url", "url": "https://github.com/SupportPages-io/wtfm.git", "ref": "claude-plugin" },
  • Network accessline 10
    "homepage": "https://github.com/SupportPages-io/wtfm#readme",

engine/detect-project/SKILL.md

  • Broad permissionsline 1
    Read Glob Grep Bash Write
  • Network accessline 169
    **f. Backend-loaded branding (use the defaults!).** Many apps load brand colours dynamically — from a database column, an ENV var, an admin-configured settings panel, or a multi-tenant theme system. The static detector picks up many such pa

engine/detect-project/assets/macosui/LICENSE-puppertino.txt

  • Executable scriptline 1
    Executable file

engine/detect-project/assets/mobileui/LICENSE-fonts.txt

  • Network accessline 4
    font stack resolves it offline) — Copyright The Inter Project Authors,   licensed under the SIL Open Font License 1.1   (https://github.com/rsms/inter/blob/master/LICENSE.txt).
  • Network accessline 5
    licensed under the SIL Open Font License 1.1   (https://github.com/rsms/inter/blob/master/LICENSE.txt).   Source: https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2
  • Network accessline 6
    (https://github.com/rsms/inter/blob/master/LICENSE.txt).
  • Network accessline 7
    Source: https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2
  • Network accessline 8
    - Roboto — Copyright The Roboto Project Authors, licensed under the   Apache License 2.0 (https://github.com/googlefonts/roboto-classic).   Source: https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2
  • Network accessline 9
    Apache License 2.0 (https://github.com/googlefonts/roboto-classic).
  • Network accessline 10
    Source: https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2

engine/detect-project/assets/mobileui/LICENSE-framework7.txt

  • Network accessline 1
    framework7-core.css, framework7-components.css, md3-defaults.css and f7-color-theme.mjs are built from the framework7 npm package (https://github.com/framework7io/framework7), MIT. icons.css embeds the
  • Network accessline 2
    f7-color-theme.mjs are built from the framework7 npm package (https://github.com/framework7io/framework7), MIT. icons.css embeds the framework7-icons font (https://github.com/framework7io/framework7-icons),
  • Network accessline 3
    (https://github.com/framework7io/framework7), MIT. icons.css embeds the
  • Network accessline 4
    framework7-icons font (https://github.com/framework7io/framework7-icons),

engine/detect-project/assets/mobileui/VERSIONS.txt

  • Network accessline 3
    framework7-icons@5.0.5 esbuild@0.21.5 (build-time only) Inter: https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2 sha256=c940764593d0fe5d596be327ca7558855e018039fb78509aa21921fd3644c3e4
  • Network accessline 4
    esbuild@0.21.5 (build-time only) Inter: https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2 sha256=c940764593d0fe5d596be327ca7558855e018039fb78509aa21921fd3644c3e4 Roboto: https://fonts.gstatic.com/s/robot
  • Network accessline 5
    Inter: https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2 sha256=c940764593d0fe5d596be327ca7558855e018039fb78509aa21921fd3644c3e4
  • Network accessline 6
    Roboto: https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2 sha256=0a44e0bb6ba5c8537e8814c148ef7755f1bce12112361231f595ecc584a18d7a

engine/detect-project/assets/mobileui/f7-color-theme.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 101
    let d = discountingIlluminant ? 1 : f * (1 - 1 / 3.6 * Math.exp((-adaptingLuminance - 42) / 92));     d = d > 1 ? 1 : d < 0 ? 0 : d;     const nc = f, rgbD = [d * (100 / rW) + 1 - d, d * (100 / gW) + 1 - d, d * (100 / bW) + 1 - d], k = 1 / 
  • Network accessline 102
    d = d > 1 ? 1 : d < 0 ? 0 : d;     const nc = f, rgbD = [d * (100 / rW) + 1 - d, d * (100 / gW) + 1 - d, d * (100 / bW) + 1 - d], k = 1 / (5 * adaptingLuminance + 1), k4 = k * k * k * k, k4F = 1 - k4, fl = k4 * adaptingLuminance + 0.1 * k4F
  • Network accessline 103
    const nc = f, rgbD = [d * (100 / rW) + 1 - d, d * (100 / gW) + 1 - d, d * (100 / bW) + 1 - d], k = 1 / (5 * adaptingLuminance + 1), k4 = k * k * k * k, k4F = 1 - k4, fl = k4 * adaptingLuminance + 0.1 * k4F * k4F * Math.cbrt(5 * adaptingLumi
  • Network accessline 105
    }   constructor(n, aw, nbb, ncb, c, nc, rgbD, fl, fLRoot, z) {     this.n = n, this.aw = aw, this.nbb = nbb, this.ncb = ncb, this.c = c, this.nc = nc, this.rgbD = rgbD, this.fl = fl, this.fLRoot = fLRoot, this.z = z;
  • Network accessline 106
    constructor(n, aw, nbb, ncb, c, nc, rgbD, fl, fLRoot, z) {     this.n = n, this.aw = aw, this.nbb = nbb, this.ncb = ncb, this.c = c, this.nc = nc, this.rgbD = rgbD, this.fl = fl, this.fLRoot = fLRoot, this.z = z;   }
  • Network accessline 107
    this.n = n, this.aw = aw, this.nbb = nbb, this.ncb = ncb, this.c = c, this.nc = nc, this.rgbD = rgbD, this.fl = fl, this.fLRoot = fLRoot, this.z = z;
  • Network accessline 121
    }   static fromIntInViewingConditions(argb, viewingConditions) {     const green = (65280 & argb) >> 8, blue = 255 & argb, redL = linearized((16711680 & argb) >> 16), greenL = linearized(green), blueL = linearized(blue), x = 0.41233895 * re
  • Network accessline 122
    static fromIntInViewingConditions(argb, viewingConditions) {     const green = (65280 & argb) >> 8, blue = 255 & argb, redL = linearized((16711680 & argb) >> 16), greenL = linearized(green), blueL = linearized(blue), x = 0.41233895 * redL +
  • Network accessline 123
    const green = (65280 & argb) >> 8, blue = 255 & argb, redL = linearized((16711680 & argb) >> 16), greenL = linearized(green), blueL = linearized(blue), x = 0.41233895 * redL + 0.35762064 * greenL + 0.18051042 * blueL, y = 0.2126 * redL + 0.
  • Network accessline 145
    }   viewed(viewingConditions) {     const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100), t = Math.pow(alpha / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73), 1 / 0.9), hRad = this.hue * Ma
  • Network accessline 146
    viewed(viewingConditions) {     const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100), t = Math.pow(alpha / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73), 1 / 0.9), hRad = this.hue * Math.P
  • Network accessline 147
    const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100), t = Math.pow(alpha / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73), 1 / 0.9), hRad = this.hue * Math.PI / 180, eHue = 0.25 * (Math.cos
  • Network accessline 149
    }   static fromXyzInViewingConditions(x, y, z, viewingConditions) {     const rC = 0.401288 * x + 0.650173 * y - 0.051461 * z, gC = -0.250268 * x + 1.204414 * y + 0.045854 * z, bC = -2079e-6 * x + 0.048952 * y + 0.953127 * z, rD = viewingCo
  • Network accessline 150
    static fromXyzInViewingConditions(x, y, z, viewingConditions) {     const rC = 0.401288 * x + 0.650173 * y - 0.051461 * z, gC = -0.250268 * x + 1.204414 * y + 0.045854 * z, bC = -2079e-6 * x + 0.048952 * y + 0.953127 * z, rD = viewingCondit
  • Network accessline 151
    const rC = 0.401288 * x + 0.650173 * y - 0.051461 * z, gC = -0.250268 * x + 1.204414 * y + 0.045854 * z, bC = -2079e-6 * x + 0.048952 * y + 0.953127 * z, rD = viewingConditions.rgbD[0] * rC, gD = viewingConditions.rgbD[1] * gC, bD = viewing
  • Network accessline 153
    }   xyzInViewingConditions(viewingConditions) {     const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100), t = Math.pow(alpha / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73), 1 / 0.9), hRad
  • Network accessline 154
    xyzInViewingConditions(viewingConditions) {     const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100), t = Math.pow(alpha / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73), 1 / 0.9), hRad = t
  • Network accessline 155
    const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100), t = Math.pow(alpha / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73), 1 / 0.9), hRad = this.hue * Math.PI / 180, eHue = 0.25 * (Math.cos
  • Network accessline 243
    static findResultByJ(hueRadians, chroma, y) {     let j = 11 * Math.sqrt(y);     const viewingConditions = ViewingConditions.DEFAULT, tInnerCoeff = 1 / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73), p1 = 0.25 * (Math.cos(hueRad
  • Network accessline 244
    let j = 11 * Math.sqrt(y);     const viewingConditions = ViewingConditions.DEFAULT, tInnerCoeff = 1 / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73), p1 = 0.25 * (Math.cos(hueRadians + 2) + 3.8) * (5e4 / 13) * viewingConditions.
  • Network accessline 245
    const viewingConditions = ViewingConditions.DEFAULT, tInnerCoeff = 1 / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73), p1 = 0.25 * (Math.cos(hueRadians + 2) + 3.8) * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb, hSi

engine/detect-project/assets/mobileui/framework7-core.css

  • Network accessline 2
    * Framework7 8.3.4  * Full featured mobile HTML framework for building iOS & Android apps  * https://framework7.io/
  • Network accessline 3
    * Full featured mobile HTML framework for building iOS & Android apps  * https://framework7.io/  *
  • Network accessline 4
    * https://framework7.io/

engine/detect-project/assets/webtui/LICENSE-webtui.txt

  • Network accessline 1
    The CSS files in this directory named webtui-core.css and theme-*.css are built verbatim from the WebTUI packages (https://github.com/webtui/webtui),
  • Network accessline 2
    built verbatim from the WebTUI packages (https://github.com/webtui/webtui),
  • Network accessline 7
    Copyright (c) WebTUI contributors (https://github.com/webtui/webtui)

engine/detect-project/assets/win32ui/7css.css

  • Network accessline 1
    /*! 7.css v0.21.1 - https://khang-nd.github.io/7.css */[role=tooltip]{background:linear-gradient(180deg,#fff,#ebebeb);border:1px solid #0006;border-radius:3px;box-shadow:5px 5px 3px -3px #0006;padding:1em 1em 1em 2.5em;position:relative}[ro

engine/detect-project/package.json

  • Executable scriptline 1
    Executable file

engine/detect-project/scripts/apply_runtime_profiles.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/check_css_health.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/check_project_map.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/check_runtime_coverage.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/check_runtime_recipe_quality.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/classify_app_type.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

engine/detect-project/scripts/classify_surface.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

engine/detect-project/scripts/classify_workspace.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/compile_css.sh

  • Executable scriptline 1
    #!/bin/bash
  • Dangerous shell operationline 273
    [ -n "$tmp_input" ] && rm -f "$tmp_input"
  • Dangerous shell operationline 277
    [ -n "$tmp_input" ] && rm -f "$tmp_input"
  • Network accessline 353
    bs_ver=$(echo "$bs_ver" | sed 's/^[v^~]//')             echo "  Fetching Bootstrap $bs_ver..." >&2             curl -sL "https://cdn.jsdelivr.net/npm/bootstrap@${bs_ver}/dist/css/bootstrap.min.css" >> "$OUTPUT_CSS" 2>/dev/null || \
  • Network accessline 354
    echo "  Fetching Bootstrap $bs_ver..." >&2             curl -sL "https://cdn.jsdelivr.net/npm/bootstrap@${bs_ver}/dist/css/bootstrap.min.css" >> "$OUTPUT_CSS" 2>/dev/null || \                 curl -sL "https://cdn.jsdelivr.net/npm/bootstrap
  • Network accessline 355
    curl -sL "https://cdn.jsdelivr.net/npm/bootstrap@${bs_ver}/dist/css/bootstrap.min.css" >> "$OUTPUT_CSS" 2>/dev/null || \
  • Network accessline 356
    curl -sL "https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" >> "$OUTPUT_CSS" 2>/dev/null || true
  • Network accessline 364
    curl -sL "https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" >> "$OUTPUT_CSS" 2>/dev/null || true
  • Network accessline 365
    echo "" >> "$OUTPUT_CSS"             curl -sL "https://cdn.jsdelivr.net/npm/@webpixels/css@${wp_ver}/dist/index.css" >> "$OUTPUT_CSS" 2>/dev/null || true             echo "" >> "$OUTPUT_CSS"
  • Network accessline 366
    curl -sL "https://cdn.jsdelivr.net/npm/@webpixels/css@${wp_ver}/dist/index.css" >> "$OUTPUT_CSS" 2>/dev/null || true
  • Network accessline 371
    bl_ver=$(echo "$bl_ver" | sed 's/^[v^~]//')             echo "  Fetching Bulma $bl_ver..." >&2             curl -sL "https://cdn.jsdelivr.net/npm/bulma@${bl_ver}/css/bulma.min.css" >> "$OUTPUT_CSS" 2>/dev/null || true
  • Network accessline 372
    echo "  Fetching Bulma $bl_ver..." >&2             curl -sL "https://cdn.jsdelivr.net/npm/bulma@${bl_ver}/css/bulma.min.css" >> "$OUTPUT_CSS" 2>/dev/null || true             echo "" >> "$OUTPUT_CSS"
  • Network accessline 373
    curl -sL "https://cdn.jsdelivr.net/npm/bulma@${bl_ver}/css/bulma.min.css" >> "$OUTPUT_CSS" 2>/dev/null || true
  • Network accessline 378
    fd_ver=$(echo "$fd_ver" | sed 's/^[v^~]//')             echo "  Fetching Foundation $fd_ver..." >&2             curl -sL "https://cdn.jsdelivr.net/npm/foundation-sites@${fd_ver}/dist/css/foundation.min.css" >> "$OUTPUT_CSS" 2>/dev/null || t
  • Network accessline 379
    echo "  Fetching Foundation $fd_ver..." >&2             curl -sL "https://cdn.jsdelivr.net/npm/foundation-sites@${fd_ver}/dist/css/foundation.min.css" >> "$OUTPUT_CSS" 2>/dev/null || true             echo "" >> "$OUTPUT_CSS"
  • Network accessline 380
    curl -sL "https://cdn.jsdelivr.net/npm/foundation-sites@${fd_ver}/dist/css/foundation.min.css" >> "$OUTPUT_CSS" 2>/dev/null || true
  • Network accessline 411
    [ -z "$url" ] || [ "$url" = "null" ] && continue         echo "  Fetching CDN: $url" >&2         curl -sL "$url" >> "$OUTPUT_CSS" 2>/dev/null || true
  • Network accessline 412
    echo "  Fetching CDN: $url" >&2         curl -sL "$url" >> "$OUTPUT_CSS" 2>/dev/null || true         echo "" >> "$OUTPUT_CSS"
  • Network accessline 413
    curl -sL "$url" >> "$OUTPUT_CSS" 2>/dev/null || true

engine/detect-project/scripts/detect_static.js

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 401
    // Pattern B: ENV.fetch("PRIMARY_COLOR", "#hex")   (env-var with default)
  • Network accessline 507
    function frameworkCdn(framework, version) {     if (!framework) return null;     if (framework.includes('tailwind')) return 'https://cdn.tailwindcss.com';
  • Network accessline 508
    if (!framework) return null;     if (framework.includes('tailwind')) return 'https://cdn.tailwindcss.com';     const cleanVersion = (version || '').replace(/^[\^~]/, '');
  • Network accessline 509
    if (framework.includes('tailwind')) return 'https://cdn.tailwindcss.com';
  • Network accessline 511
    if (framework.includes('webpixels')) {         const v = cleanVersion || 'latest';         return `https://cdn.jsdelivr.net/npm/@webpixels/css@${v}/dist/index.css`;
  • Network accessline 512
    const v = cleanVersion || 'latest';         return `https://cdn.jsdelivr.net/npm/@webpixels/css@${v}/dist/index.css`;     }
  • Network accessline 513
    return `https://cdn.jsdelivr.net/npm/@webpixels/css@${v}/dist/index.css`;
  • Network accessline 515
    if (framework.includes('bootstrap')) {         const v = cleanVersion || '5.3.2';         return `https://cdn.jsdelivr.net/npm/bootstrap@${v}/dist/css/bootstrap.min.css`;
  • Network accessline 516
    const v = cleanVersion || '5.3.2';         return `https://cdn.jsdelivr.net/npm/bootstrap@${v}/dist/css/bootstrap.min.css`;     }
  • Network accessline 517
    return `https://cdn.jsdelivr.net/npm/bootstrap@${v}/dist/css/bootstrap.min.css`;
  • Network accessline 519
    if (framework.includes('bulma')) {         const v = cleanVersion || '0.9.4';         return `https://cdn.jsdelivr.net/npm/bulma@${v}/css/bulma.min.css`;
  • Network accessline 520
    const v = cleanVersion || '0.9.4';         return `https://cdn.jsdelivr.net/npm/bulma@${v}/css/bulma.min.css`;     }
  • Network accessline 521
    return `https://cdn.jsdelivr.net/npm/bulma@${v}/css/bulma.min.css`;
  • Network accessline 523
    if (framework.includes('foundation')) {         const v = cleanVersion || '6.7.5';         return `https://cdn.jsdelivr.net/npm/foundation-sites@${v}/dist/css/foundation.min.css`;
  • Network accessline 524
    const v = cleanVersion || '6.7.5';         return `https://cdn.jsdelivr.net/npm/foundation-sites@${v}/dist/css/foundation.min.css`;     }
  • Network accessline 525
    return `https://cdn.jsdelivr.net/npm/foundation-sites@${v}/dist/css/foundation.min.css`;

engine/detect-project/scripts/detect_structure.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/include_census.js

  • Executable scriptline 1
    Executable file

engine/detect-project/scripts/json_get.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/merge_json.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/recommend_model_tier.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/resolve_route_chains.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/run_css_build.sh

  • Executable scriptline 1
    #!/bin/bash

engine/detect-project/scripts/sanitize_css.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/test_classify_surface.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/test_node_helpers.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/test_recommend_model_tier.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/test_resolve_route_chains.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/test_runtime_coverage.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/test_runtime_recipe_quality.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/theme_overrides.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/detect-project/scripts/write_branding.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/SKILL.md

  • Broad permissionsline 1
    Read Glob Grep Bash Write
  • Dangerous shell operationline 38
    rm -f "$OUT/generated_image_requests.json" "$OUT/generated_images.json"; rm -rf "$OUT/generated-assets"
  • Dangerous shell operationline 45
    **`polish=only`** (re-polish an existing article): run STEP 0 WITHOUT its `rm -f … generated_image_requests.json …` line (the existing `$OUT` is the input, keep every file), skip STEP 0.5 through Phase 3 entirely, and go straight to **Phase
  • Dangerous shell operationline 464
    Remove the run-trace marker: `rm -f ./.rtfm-trace/CURRENT`.

engine/generate-illustrated-article/package-lock.json

  • Network accessline 17
    "node_modules/@puppeteer/browsers": {       "version": "3.2.6",       "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-3.2.6.tgz",
  • Network accessline 18
    "version": "3.2.6",       "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-3.2.6.tgz",       "integrity": "sha512-MJP29gVoHznmqmwhH1tlZqzfeQ3aylTpSSa6WKZXtkwYUH02i9imBmWGTyZrbnAou5paX78SE4jMAUqnEPf8ug==",
  • Network accessline 19
    "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-3.2.6.tgz",
  • Network accessline 45
    "node_modules/ansi-regex": {       "version": "6.4.0",       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.4.0.tgz",
  • Network accessline 46
    "version": "6.4.0",       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.4.0.tgz",       "integrity": "sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==",
  • Network accessline 47
    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.4.0.tgz",
  • Network accessline 52
    },       "funding": {         "url": "https://github.com/chalk/ansi-regex?sponsor=1"
  • Network accessline 53
    "funding": {         "url": "https://github.com/chalk/ansi-regex?sponsor=1"       }
  • Network accessline 54
    "url": "https://github.com/chalk/ansi-regex?sponsor=1"
  • Network accessline 57
    "node_modules/ansi-styles": {       "version": "6.2.3",       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
  • Network accessline 58
    "version": "6.2.3",       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",       "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
  • Network accessline 59
    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
  • Network accessline 64
    },       "funding": {         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
  • Network accessline 65
    "funding": {         "url": "https://github.com/chalk/ansi-styles?sponsor=1"       }
  • Network accessline 66
    "url": "https://github.com/chalk/ansi-styles?sponsor=1"
  • Network accessline 69
    "node_modules/chromium-bidi": {       "version": "157.0.8090-0",       "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-157.0.8090-0.tgz",
  • Network accessline 70
    "version": "157.0.8090-0",       "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-157.0.8090-0.tgz",       "integrity": "sha512-KJw7IQgqXwxpJgJlEIPg5mr2ZoqA+jkTRtc5EABI7sUJ3bu3cpI7NuEBoj4Gn1AsF78CaT9So5WQWspK3/wYag==",
  • Network accessline 71
    "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-157.0.8090-0.tgz",
  • Network accessline 85
    "node_modules/cliui": {       "version": "9.0.1",       "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
  • Network accessline 86
    "version": "9.0.1",       "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",       "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==",
  • Network accessline 87
    "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
  • Network accessline 99
    "node_modules/cliui/node_modules/string-width": {       "version": "7.2.0",       "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
  • Network accessline 100
    "version": "7.2.0",       "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",       "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
  • Network accessline 101
    "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
  • Network accessline 111
    },       "funding": {         "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 112
    "funding": {         "url": "https://github.com/sponsors/sindresorhus"       }
  • Network accessline 113
    "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 116
    "node_modules/devtools-protocol": {       "version": "0.0.1704951",       "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1704951.tgz",
  • Network accessline 117
    "version": "0.0.1704951",       "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1704951.tgz",       "integrity": "sha512-GQhQOs9u/Mvm1zMtJIH872JS4AskuZdUSsPNPk4ChahtWAUqgz6atEtIsMt+nO7MqF1Ic4HxII/k8Cu36JivN
  • Network accessline 118
    "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1704951.tgz",
  • Network accessline 122
    "node_modules/emoji-regex": {       "version": "10.6.0",       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
  • Network accessline 123
    "version": "10.6.0",       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",       "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
  • Network accessline 124
    "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
  • Network accessline 128
    "node_modules/escalade": {       "version": "3.2.0",       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
  • Network accessline 129
    "version": "3.2.0",       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",       "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
  • Network accessline 130
    "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
  • Network accessline 137
    "node_modules/get-caller-file": {       "version": "2.0.5",       "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
  • Network accessline 138
    "version": "2.0.5",       "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",       "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
  • Network accessline 139
    "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
  • Network accessline 146
    "node_modules/get-east-asian-width": {       "version": "1.7.0",       "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.7.0.tgz",
  • Network accessline 147
    "version": "1.7.0",       "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.7.0.tgz",       "integrity": "sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==",
  • Network accessline 148
    "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.7.0.tgz",
  • Network accessline 153
    },       "funding": {         "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 154
    "funding": {         "url": "https://github.com/sponsors/sindresorhus"       }
  • Network accessline 155
    "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 158
    "node_modules/lilconfig": {       "version": "3.1.3",       "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
  • Network accessline 159
    "version": "3.1.3",       "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",       "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
  • Network accessline 160
    "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
  • Network accessline 165
    },       "funding": {         "url": "https://github.com/sponsors/antonk52"
  • Network accessline 166
    "funding": {         "url": "https://github.com/sponsors/antonk52"       }
  • Network accessline 167
    "url": "https://github.com/sponsors/antonk52"
  • Network accessline 170
    "node_modules/mitt": {       "version": "3.0.1",       "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
  • Network accessline 171
    "version": "3.0.1",       "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",       "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
  • Network accessline 172
    "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
  • Network accessline 176
    "node_modules/modern-tar": {       "version": "0.8.6",       "resolved": "https://registry.npmjs.org/modern-tar/-/modern-tar-0.8.6.tgz",
  • Network accessline 177
    "version": "0.8.6",       "resolved": "https://registry.npmjs.org/modern-tar/-/modern-tar-0.8.6.tgz",       "integrity": "sha512-LYSks0tNVqbtez/9OB0YFP6qLRSqkdAxJWOQpVaR67lNTbj2zNLyYpowkRMia5lXLCZKzxwoxkxH2MbbBR2aEg==",
  • Network accessline 178
    "resolved": "https://registry.npmjs.org/modern-tar/-/modern-tar-0.8.6.tgz",
  • Network accessline 185
    "node_modules/puppeteer": {       "version": "25.16.0",       "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-25.16.0.tgz",
  • Network accessline 186
    "version": "25.16.0",       "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-25.16.0.tgz",       "integrity": "sha512-LOr3reYnxAYYfQkpopz1fQnL0LdvqhpR5U2Fu+QnwzTX2gpVTHsn91UETo5NNC1md2/oC54Zu1ChBXgZDNSP1A==",
  • Network accessline 187
    "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-25.16.0.tgz",
  • Network accessline 206
    "node_modules/puppeteer-core": {       "version": "25.16.0",       "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-25.16.0.tgz",
  • Network accessline 207
    "version": "25.16.0",       "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-25.16.0.tgz",       "integrity": "sha512-VA5Pf54N8shfopNkZZXCdiiwfnnY8ZJYAMqFQRhlH5mGUhfwf53Ar770GPtdpTDLUqvQeYpIBtC9/G2Jij2IJw==",
  • Network accessline 208
    "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-25.16.0.tgz",
  • Network accessline 223
    "node_modules/string-width": {       "version": "8.3.0",       "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.3.0.tgz",
  • Network accessline 224
    "version": "8.3.0",       "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.3.0.tgz",       "integrity": "sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==",
  • Network accessline 225
    "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.3.0.tgz",
  • Network accessline 234
    },       "funding": {         "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 235
    "funding": {         "url": "https://github.com/sponsors/sindresorhus"       }
  • Network accessline 236
    "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 239
    "node_modules/strip-ansi": {       "version": "7.2.0",       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
  • Network accessline 240
    "version": "7.2.0",       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",       "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
  • Network accessline 241
    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
  • Network accessline 249
    },       "funding": {         "url": "https://github.com/chalk/strip-ansi?sponsor=1"
  • Network accessline 250
    "funding": {         "url": "https://github.com/chalk/strip-ansi?sponsor=1"       }
  • Network accessline 251
    "url": "https://github.com/chalk/strip-ansi?sponsor=1"
  • Network accessline 254
    "node_modules/typed-query-selector": {       "version": "2.12.3",       "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.3.tgz",
  • Network accessline 255
    "version": "2.12.3",       "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.3.tgz",       "integrity": "sha512-/dtuMZyutHLlrxWhhC1uib00ELUr2dZ8C9B8YzZYsJmeE3V56OxRblrSM2UaF142pcMtak7ehZ6+poWGeehNIg=="
  • Network accessline 256
    "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.3.tgz",
  • Network accessline 260
    "node_modules/webdriver-bidi-protocol": {       "version": "1.0.1",       "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-1.0.1.tgz",
  • Network accessline 261
    "version": "1.0.1",       "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-1.0.1.tgz",       "integrity": "sha512-WXWs/aXF2a6Al1Z2/V/7Gp2oPZOAAmHjJOTmv4KCXRJ122IMj3tSSMc6a4q3K4QOmhQbse/Ahr+oTVJOU2dUi
  • Network accessline 262
    "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-1.0.1.tgz",
  • Network accessline 266
    "node_modules/wrap-ansi": {       "version": "9.0.2",       "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
  • Network accessline 267
    "version": "9.0.2",       "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",       "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
  • Network accessline 268
    "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
  • Network accessline 278
    },       "funding": {         "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
  • Network accessline 279
    "funding": {         "url": "https://github.com/chalk/wrap-ansi?sponsor=1"       }
  • Network accessline 280
    "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
  • Network accessline 283
    "node_modules/wrap-ansi/node_modules/string-width": {       "version": "7.2.0",       "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
  • Network accessline 284
    "version": "7.2.0",       "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",       "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
  • Network accessline 285
    "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
  • Network accessline 295
    },       "funding": {         "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 296
    "funding": {         "url": "https://github.com/sponsors/sindresorhus"       }
  • Network accessline 297
    "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 300
    "node_modules/ws": {       "version": "8.22.0",       "resolved": "https://registry.npmjs.org/ws/-/ws-8.22.0.tgz",
  • Network accessline 301
    "version": "8.22.0",       "resolved": "https://registry.npmjs.org/ws/-/ws-8.22.0.tgz",       "integrity": "sha512-Ydggc987+RO0AnWtZ/7Wq9FtNvcrL1b/RO0ud9mWjUPgDrsAAwQSF51sm2hm1XofbU/4jkpGEsLFsZZxU+1DOg==",
  • Network accessline 302
    "resolved": "https://registry.npmjs.org/ws/-/ws-8.22.0.tgz",
  • Network accessline 321
    "node_modules/y18n": {       "version": "5.0.8",       "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
  • Network accessline 322
    "version": "5.0.8",       "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",       "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
  • Network accessline 323
    "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
  • Network accessline 330
    "node_modules/yargs": {       "version": "18.2.0",       "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.2.0.tgz",
  • Network accessline 331
    "version": "18.2.0",       "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.2.0.tgz",       "integrity": "sha512-9OpKOLeaoNFecEp7P6iYbzze/5CqWoH7N3SMs/6y1XF4nMvFMspEGZzJ6uFi9MmQwXhyzqYoSEKO3tvA3Z/o2w==",
  • Network accessline 332
    "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.2.0.tgz",
  • Network accessline 347
    "node_modules/yargs-parser": {       "version": "22.0.0",       "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",
  • Network accessline 348
    "version": "22.0.0",       "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",       "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==",
  • Network accessline 349
    "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",
  • Network accessline 356
    "node_modules/zod": {       "version": "4.6.7",       "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz",
  • Network accessline 357
    "version": "4.6.7",       "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz",       "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==",
  • Network accessline 358
    "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz",
  • Network accessline 360
    "license": "MIT",       "funding": {         "url": "https://github.com/sponsors/colinhacks"
  • Network accessline 361
    "funding": {         "url": "https://github.com/sponsors/colinhacks"       }
  • Network accessline 362
    "url": "https://github.com/sponsors/colinhacks"

engine/generate-illustrated-article/package.json

  • Executable scriptline 1
    Executable file

engine/generate-illustrated-article/scripts/article_blocks.js

  • Executable scriptline 1
    Executable file

engine/generate-illustrated-article/scripts/check_article_json.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/content_locale.js

  • Executable scriptline 1
    Executable file

engine/generate-illustrated-article/scripts/emit_walkthrough_signals.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/extract_images.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/find_locale_files.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/generate_content_images.js

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 211
    async function callOpenAI({ apiKey, model, prompt, size, fetchImpl = globalThis.fetch, apiBase }) {     if (typeof fetchImpl !== 'function') throw new Error('fetch is unavailable; Node.js 18+ is required');     const base = (apiBase || proc
  • Network accessline 212
    if (typeof fetchImpl !== 'function') throw new Error('fetch is unavailable; Node.js 18+ is required');     const base = (apiBase || process.env.OPENAI_API_BASE_URL || 'https://api.openai.com/v1').replace(/\/$/, '');     const response = awa
  • Network accessline 213
    const base = (apiBase || process.env.OPENAI_API_BASE_URL || 'https://api.openai.com/v1').replace(/\/$/, '');
  • Access to secretsline 258
    [Credential-related source omitted]
  • Access to secretsline 346
    [Credential-related source omitted]

engine/generate-illustrated-article/scripts/include_census.js

  • Executable scriptline 1
    Executable file

engine/generate-illustrated-article/scripts/inject_assets.js

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 57
    const TAILWIND_CDN = '<script src="https://cdn.tailwindcss.com"></script>';
  • Network accessline 559
    fontawesome: {         detect: /class=["'][^"']*\bfa[srlbd]?\s+fa-|class=["'][^"']*\bfa-[a-z]/,         cssUrl: 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css',
  • Network accessline 560
    detect: /class=["'][^"']*\bfa[srlbd]?\s+fa-|class=["'][^"']*\bfa-[a-z]/,         cssUrl: 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css',     },
  • Network accessline 561
    cssUrl: 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css',
  • Network accessline 563
    'bootstrap-icons': {         detect: /class=["'][^"']*\bbi[\s-]/,         cssUrl: 'https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css',
  • Network accessline 564
    detect: /class=["'][^"']*\bbi[\s-]/,         cssUrl: 'https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css',     },
  • Network accessline 565
    cssUrl: 'https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css',
  • Network accessline 569
    detect: /class=["'][^"']*\bmaterial-icons/,         cssUrl: 'https://fonts.googleapis.com/icon?family=Material+Icons',
  • Network accessline 570
    cssUrl: 'https://fonts.googleapis.com/icon?family=Material+Icons',
  • Network accessline 574
    detect: /class=["'][^"']*\bmaterial-symbols-/,         cssUrl: 'https://fonts.googleapis.com/css2'
  • Network accessline 575
    cssUrl: 'https://fonts.googleapis.com/css2'
  • Network accessline 582
    detect: /class=["'][^"']*\bbx\s+bx[sl]?-/,         cssUrl: 'https://cdn.jsdelivr.net/npm/boxicons@2.1.4/css/boxicons.min.css',
  • Network accessline 583
    cssUrl: 'https://cdn.jsdelivr.net/npm/boxicons@2.1.4/css/boxicons.min.css',
  • Network accessline 587
    detect: /class=["'][^"']*\bri-[a-z0-9-]+/,         cssUrl: 'https://cdn.jsdelivr.net/npm/remixicon@4.2.0/fonts/remixicon.css',
  • Network accessline 588
    cssUrl: 'https://cdn.jsdelivr.net/npm/remixicon@4.2.0/fonts/remixicon.css',
  • Network accessline 594
    detect: /class=["'][^"']*\bglyphicon\b/,         cssUrl: 'https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/css/bootstrap.min.css',
  • Network accessline 595
    cssUrl: 'https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/css/bootstrap.min.css',
  • Network accessline 605
    const ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 '         + '(KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36';     const response = await fetch(url, { headers: { 'User-Agent': ua }, signal: AbortSignal.time
  • Network accessline 606
    + '(KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36';     const response = await fetch(url, { headers: { 'User-Agent': ua }, signal: AbortSignal.timeout(timeoutMs) });     if (!response.ok) throw new Error(`HTTP Error ${response.status}: 
  • Network accessline 607
    const response = await fetch(url, { headers: { 'User-Agent': ua }, signal: AbortSignal.timeout(timeoutMs) });
  • Network accessline 707
    /**  * Extract the first font family name from branding.google_fonts entries,  * e.g. https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap
  • Network accessline 708
    * Extract the first font family name from branding.google_fonts entries,  * e.g. https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap  * -> "Inter". Descriptor objects contribute their `family`. Used to put the
  • Network accessline 709
    * e.g. https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap
  • Network accessline 731
    * {"family": "Plus Jakarta Sans", "weights": ["500","600","700"], "source": ...}  * (what detect-project records for a next/font/google import), which is turned  * into https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@500;600
  • Network accessline 732
    * (what detect-project records for a next/font/google import), which is turned  * into https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@500;600;700&display=swap.  * Returns null for anything unusable.
  • Network accessline 733
    * into https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@500;600;700&display=swap.
  • Network accessline 742
    if (!/^(https?:)?\/\//.test(s) && !s.includes('/')) {             return `https://fonts.googleapis.com/css2?family=${s.replaceAll(' ', '+')}&display=swap`;
  • Network accessline 743
    return `https://fonts.googleapis.com/css2?family=${s.replaceAll(' ', '+')}&display=swap`;
  • Network accessline 750
    const famQ = family.replaceAll(' ', '+');         const weights = (truthy(item.weights) ? item.weights : []).map(w => String(w).trim()).filter(Boolean);         if (weights.length) return `https://fonts.googleapis.com/css2?family=${famQ}:wg
  • Network accessline 751
    const weights = (truthy(item.weights) ? item.weights : []).map(w => String(w).trim()).filter(Boolean);         if (weights.length) return `https://fonts.googleapis.com/css2?family=${famQ}:wght@${weights.join(';')}&display=swap`;         ret
  • Network accessline 752
    if (weights.length) return `https://fonts.googleapis.com/css2?family=${famQ}:wght@${weights.join(';')}&display=swap`;
  • Network accessline 753
    return `https://fonts.googleapis.com/css2?family=${famQ}&display=swap`;
  • Network accessline 996
    if (symbols.size) {         const spriteSvg = '<svg xmlns="http://www.w3.org/2000/svg" style="display:none" '
  • Network accessline 997
    const spriteSvg = '<svg xmlns="http://www.w3.org/2000/svg" style="display:none" '

engine/generate-illustrated-article/scripts/jit_mockup_css.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/label_evidence.js

  • Executable scriptline 1
    Executable file

engine/generate-illustrated-article/scripts/lint_article_copy.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/lint_mockup_fidelity.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/polish_tickets.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/related_repos.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

engine/generate-illustrated-article/scripts/render_all.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/render_mockup.js

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 103
    font-weight: 100 900; } @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap');
  • Network accessline 104
    } @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap'); .tui-app, .tui-container, [data-viewport="tui"] body {
  • Network accessline 105
    @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap');

engine/generate-illustrated-article/scripts/render_ready.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/resolve_workspace.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

engine/generate-illustrated-article/scripts/runtime_region_geometry.js

  • Executable scriptline 1
    Executable file

engine/generate-illustrated-article/scripts/source_paths.js

  • Executable scriptline 1
    Executable file

engine/generate-illustrated-article/scripts/test_control_visibility.js

  • Executable scriptline 1
    Executable file

engine/generate-illustrated-article/scripts/test_emit_walkthrough_signals.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/test_find_locale_files.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/test_generate_content_images.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/test_include_census.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/test_label_evidence.js

  • Executable scriptline 1
    Executable file
  • Access to secretsline 11
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Access to secretsline 34
    [Credential-related source omitted]

engine/generate-illustrated-article/scripts/test_lint_article_copy.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/test_lint_mockup_fidelity.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/test_node_ports.js

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 91
    {     assert.strictEqual(buildCssHeadBlock(null, null), '<script src="https://cdn.tailwindcss.com"></script>');
  • Network accessline 92
    assert.strictEqual(buildCssHeadBlock(null, null), '<script src="https://cdn.tailwindcss.com"></script>');
  • Network accessline 102
    assert(head.includes('--brand-text-muted: #999;'));     assert(!head.includes('cdn.tailwindcss.com'), 'compiled non-Tailwind CSS needs no CDN');     assert.strictEqual(firstGoogleFontFamily({ google_fonts: ['https://fonts.googleapis.com/css
  • Network accessline 103
    assert(!head.includes('cdn.tailwindcss.com'), 'compiled non-Tailwind CSS needs no CDN');     assert.strictEqual(firstGoogleFontFamily({ google_fonts: ['https://fonts.googleapis.com/css2?family=Open+Sans:wght@400'] }), 'Open Sans');     asse
  • Network accessline 104
    assert.strictEqual(firstGoogleFontFamily({ google_fonts: ['https://fonts.googleapis.com/css2?family=Open+Sans:wght@400'] }), 'Open Sans');

engine/generate-illustrated-article/scripts/test_polish_tickets.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/test_related_repos.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/test_render_ready.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/test_source_paths.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/trace_hook.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/trace_hook.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

engine/generate-illustrated-article/scripts/validate_html.js

  • Executable scriptline 1
    #!/usr/bin/env node

engine/generate-illustrated-article/scripts/watermark.js

  • Executable scriptline 1
    Executable file

plugin/.claude-plugin/plugin.json

  • Network accessline 6
    "author": {     "name": "SupportPages.io",     "url": "https://supportpages.io"
  • Network accessline 7
    "name": "SupportPages.io",     "url": "https://supportpages.io"   },
  • Network accessline 8
    "url": "https://supportpages.io"
  • Network accessline 9
    },   "homepage": "https://github.com/SupportPages-io/wtfm#readme",   "repository": "https://github.com/SupportPages-io/wtfm",
  • Network accessline 10
    "homepage": "https://github.com/SupportPages-io/wtfm#readme",
  • Network accessline 11
    "repository": "https://github.com/SupportPages-io/wtfm",
  • Network accessline 12
    "documentationUrl": "https://help.wtfm.sh/",
  • Network accessline 13
    "supportUrl": "https://github.com/SupportPages-io/wtfm/issues",
  • Network accessline 14
    "privacyPolicyUrl": "https://supportpages.io/legal/privacy",
  • Network accessline 15
    "termsOfServiceUrl": "https://supportpages.io/legal/terms",

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

and 147 more

Works with

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