Waza Skill Evaluator
microsoft/waza
Evaluates agent skills with a Go CLI that runs YAML-defined benchmarks, compares runs and scores the quality of SKILL.md frontmatter.
Create, improve, and evaluate agent skills (SKILL.md plus reference files).
$ npx skills add himself65/finance-skills --skill skill-creator -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install himself65/finance-skills skill-creator --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/himself65/finance-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/skill-creator/skills/skill-creator .claude/skills/skill-creator && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "skill-creator" agent skill from https://github.com/himself65/finance-skills/tree/main/plugins/skill-creator/skills/skill-creator into .claude/skills/skill-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-creator", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/himself65/finance-skills/tree/main/plugins/skill-creator/skills/skill-creatorType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add himself65/finance-skills --skill skill-creator -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install himself65/finance-skills skill-creator --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/himself65/finance-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/skill-creator/skills/skill-creator .agents/skills/skill-creator && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "skill-creator" agent skill from https://github.com/himself65/finance-skills/tree/main/plugins/skill-creator/skills/skill-creator into .agents/skills/skill-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-creator", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add himself65/finance-skills --skill skill-creator -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install himself65/finance-skills skill-creator --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/himself65/finance-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/skill-creator/skills/skill-creator .cursor/skills/skill-creator && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "skill-creator" agent skill from https://github.com/himself65/finance-skills/tree/main/plugins/skill-creator/skills/skill-creator into .cursor/skills/skill-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-creator", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/himself65/finance-skills.git --path plugins/skill-creator/skills/skill-creator--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add himself65/finance-skills --skill skill-creator -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install himself65/finance-skills skill-creator --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/himself65/finance-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/skill-creator/skills/skill-creator .gemini/skills/skill-creator && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "skill-creator" agent skill from https://github.com/himself65/finance-skills/tree/main/plugins/skill-creator/skills/skill-creator into .gemini/skills/skill-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-creator", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install himself65/finance-skills skill-creatorInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add himself65/finance-skills --skill skill-creator -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/himself65/finance-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/skill-creator/skills/skill-creator .github/skills/skill-creator && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "skill-creator" agent skill from https://github.com/himself65/finance-skills/tree/main/plugins/skill-creator/skills/skill-creator into .github/skills/skill-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-creator", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add himself65/finance-skills --skill skill-creator -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install himself65/finance-skills skill-creator --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/himself65/finance-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/skill-creator/skills/skill-creator .opencode/skills/skill-creator && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "skill-creator" agent skill from https://github.com/himself65/finance-skills/tree/main/plugins/skill-creator/skills/skill-creator into .opencode/skills/skill-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-creator", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skill-creatorCreate, improve, and evaluate agent skills (SKILL.md plus reference files).
Skill Creator is an agent skill from himself65/finance-skills. Create, improve, and evaluate agent skills (SKILL.md plus reference files). Use this skill whenever the user wants to build, scaffold, or design a new skill, improve or fix an existing skill that isn't working well, score or benchmark a skill's quality or run evals on it, or turn a repeated manual workflow into a skill ("I keep doing X manually", "can you remember how to do X", "turn this into a skill").
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including reference files (for example `README.md`, `references/architecture-patterns.md` and `references/dynamic-calling.md`).
It sits in Agent Workflows, covering Skill authoring, LLM evaluation and Agent evaluation and testing. The repository describes itself as: A collection of skills for AI financial analysis. The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 01fc7b4. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
ghgitcurlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh, git and curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Skill Creator loads about 3.8k tokens when it runs, and up to ~19k if it reads all its reference files. Until then it costs about 105 tokens; SKILL.md has 1,855 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from himself65/finance-skills at commit 01fc7b4, republished under its MIT licence (© himself65). 1,855 words, ~3,812 tokens.
.claude/skills/skill-creator/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.Create, evaluate, and iterate on high-quality agent skills. This skill covers the whole lifecycle: planning what the skill should do, writing SKILL.md and reference files, scoring quality against a rubric, and iterating until the skill meets production standards.
Philosophy: A great skill is precise, not long. Its description routes the right requests to it. Its body gives the model the context it can't get anywhere else — the environment, tool contracts, defaults, domain judgment, and the reasons behind each constraint — and leaves out what a capable model already does on its own. Current Claude models follow instructions closely and literally, so every line gets acted on: an over-scripted or shouting skill produces rigid, over-cautious output, while a clear goal and quality bar let the model plan the work itself. references/writing-guide.md covers this in detail.
Runtime adaptation: Skills that touch external tools should detect what is installed, authenticated, and reachable at runtime and adapt, rather than assuming a single method. Offer fallback paths where real alternatives exist. See references/dynamic-calling.md for the pattern catalog.
Classify the request into one of these modes:
| User Intent | Mode | Jump To |
|---|---|---|
| Create a brand-new skill | Create | Step 2 |
| Improve / fix an existing skill | Improve | Step 6 |
| Evaluate / score a skill's quality | Evaluate | Step 7 |
If ambiguous, ask: "Do you want to create a new skill, improve an existing one, or evaluate one?"
Before writing anything, answer these questions (ask the user if unclear):
| Question | Why it matters |
|---|---|
| What task does the skill automate? | Defines the core workflow |
| Who is the target user? | Determines complexity and terminology level |
| What tools/APIs/CLIs does it use? | Determines dependencies and platform restrictions |
| What does the user provide as input? | Defines parameters and defaults |
| What should the output look like? | Defines the output contract |
| Does it need API keys or credentials? | Determines required_environment_variables |
| Should it work on Claude.ai or only CLI? | Determines platform field and dynamic commands |
Before writing SKILL.md, plan the structure. Read references/architecture-patterns.md for detailed guidance on each pattern.
| Pattern | When to use | Shape | Example |
|---|---|---|---|
| Linear | Single workflow, no branching | Setup → fetch → analyze → respond | earnings-preview |
| Router | Multiple sub-tasks under one umbrella | Setup + routing table + sub-skills | stock-correlation (4 sub-skills), etf-premium |
| Methodology | Formal domain framework with real gates | Ordered checks, each able to stop the analysis | sepa-strategy |
| Widget | Generates interactive UI output | Extract → compute → render → explain | options-payoff |
| API Wrapper | Wraps an external API with many endpoints | Auth + endpoint map + heavy references | fintel-data |
Every skill has three parts:
If a skill needs more than about nine steps, split it or use the Router pattern.
Skills that touch external tools should start with a runtime detection flow. Read references/dynamic-calling.md for all patterns. The detection flow answers:
| Question | How to detect | Decision |
|---|---|---|
| Is the CLI tool installed? | command -v tool | CLI path vs Python fallback |
| Is the user authenticated? | tool auth status / echo $API_KEY | Skip auth setup vs guide through it |
| Which runtime has the library? | import lib in terminal vs execute_code | Route to correct runtime |
| Is a richer tool available? | gh --version vs git --version | Rich path vs minimal path |
| Is live data reachable? | curl -s endpoint | Live data vs cached/default |
The detection output feeds a decision tree that the rest of the skill follows — check rather than assume.
Decide what goes in SKILL.md vs references/:
| In SKILL.md (under ~250 lines) | In references/ |
|---|---|
| Workflow and decision points | Detailed API documentation |
| Routing/decision tables | Code templates (>20 lines) |
| Parameter defaults table | Formulas and edge cases |
| Output contract | Troubleshooting database |
| Quick examples (1-3) | Comprehensive examples (4+) and dated datasets |
Read references/writing-guide.md for detailed instructions on writing each section. Read references/frontmatter-guide.md for the complete YAML field reference.
Frontmatter first: name (lowercase-hyphenated, max 64 chars) and description (max 1024 chars, no angle brackets) are required. The description is routing text that rides along in every request: say what the skill does, name the categories of requests it serves and the distinctive vocabulary users will use (methods, tools, data types, entities), and point to sibling skills for neighboring requests. Name intent categories instead of listing near-synonymous phrasings.
Detection flow for external dependencies: use !command`` probes with fallback sentinels to detect tools, auth state, and runtime, then route to a method. Offer a second path where a real alternative exists (CLI vs Python library vs built-in tool). See references/dynamic-calling.md.
Match specificity to fragility: give exact commands, flags, and code for fragile operations — installs, auth, CLI syntax, API contracts, calculations that must be right. For judgment work — analysis, interpretation, writing — state the goal, the criteria, and the domain heuristics, and let the model plan. Put a pass/fail gate wherever a failed check really ends the analysis.
Defaults table: give every parameter the user might omit an explicit default, so the skill never stalls waiting for input.
Output contract in the final step: what to lead with, what the answer must contain, which caveats apply, and any verdict or grade scale. Pin a section-by-section template only where the format itself matters (scorecards, widgets, checklists). Describe length qualitatively rather than with word or sentence counts, and label examples as illustrative rather than filling them with made-up figures for real companies.
Plain register: state each constraint once, with its reason. Leave out capitalized MUST/NEVER/CRITICAL, repeated warnings, and instructions current models follow by default ("be thorough", "think step by step", "double-check your answer") — they cause over-triggering and over-checking rather than better work. Keep real policy constraints (read-only, no trade execution, privacy) in plain words.
Keep volatile facts honest: fetch live data where you can, date-stamp anything that will go stale, and keep dated datasets in references/. Verify API names and response shapes against the current library before shipping.
See references/skill-examples.md for annotated examples of each pattern.
Read references/writing-guide.md for the full reference file authoring guide.
lowercase-hyphenated.md, one file per concept-cluster## Reference Files section at the endRun the skill through the quality rubric in references/quality-rubric.md. Score each dimension.
name and description; the description is under 1024 characters with no angle brackets!command`` checks and fallbacks (|| echo "...")If any item fails, fix it before delivering to the user.
When the user asks to improve a skill:
Read the SKILL.md and all reference files (on Hermes, skill_view(name) loads them).
Use the quality rubric from references/quality-rubric.md. Present the score breakdown to the user (illustrative):
| Dimension | Score | Issue |
|---|---|---|
| Trigger quality | 6/10 | Twenty near-synonym phrasings; misses the ETF use case |
| Defaults coverage | 3/10 | No defaults table |
| Instruction design | 5/10 | Scripted steps for judgment work; capitalized warnings |
| Output contract | 4/10 | Rigid 9-section template with made-up example figures |
| Reference usage | 7/10 | Good split, but missing troubleshooting |
List concrete changes ranked by impact:
After user approval, edit the skill files (on Hermes, use skill_manage(action='patch', ...) for targeted changes or skill_manage(action='edit', ...) for full rewrites).
When the user asks to evaluate or score a skill:
Read the full SKILL.md and all reference files. Count lines, steps, defaults, and reference files, and note the description's length and the intent categories it covers.
Use the comprehensive rubric from references/quality-rubric.md. Score each of the 10 dimensions on a 1-10 scale.
## Skill Quality Scorecard: [skill-name]
| # | Dimension | Score | Notes |
|---|---|---|---|
| 1 | Trigger quality | 8/10 | Covers all four intent categories; one sibling boundary missing |
| 2 | Defaults coverage | 9/10 | All 11 parameters have defaults |
| 3 | Instruction design | 8/10 | Ordered setup and compute; analysis stated as criteria |
| 4 | Reference file strategy | 7/10 | 2 files, could use troubleshooting |
| 5 | Dynamic content | 10/10 | Dep check + live data injection |
| 6 | Output contract | 9/10 | Leads with verdict; required caveats; scale defined |
| 7 | Error handling | 6/10 | Missing data handling unclear |
| 8 | Code/formula quality | 8/10 | Working JS, copy-paste ready |
| 9 | Conciseness & register | 7/10 | 196 lines; two capitalized warnings to restate |
| 10 | Domain accuracy | 9/10 | BS formulas correct, edge cases covered |
**Overall: 81/100** -- Production quality
### Top 3 Improvements
1. ...
2. ...
3. ...Skills in this repo that show each pattern well:
| Skill | What it demonstrates |
|---|---|
| sepa-strategy | Methodology pattern: real gates, domain criteria in references, a verdict scale |
| options-payoff | Widget pattern: a default for every field, live data injection, a precise render spec |
| stock-correlation | Router pattern: intent routing table, self-contained sub-skills, metrics computed in code |
| earnings-preview | Output contract: a content checklist with one judgment section, lead-with-the-headline guidance |
| fintel-data | API wrapper: key resolution flow, endpoint map, error semantics |
Deliver:
Deliver:
Deliver:
references/dynamic-calling.md -- Core reference: Detection flows, decision trees, method fallbacks, runtime awareness, and multi-tool adaptation patterns with annotated examples from production skillsreferences/writing-guide.md -- How to write each SKILL.md section for current Claude models: descriptions, detection flows, instructions matched to fragility, defaults, output contracts, and reference filesreferences/architecture-patterns.md -- Linear, Router, Methodology, Widget, and API Wrapper patterns with examples and anti-patternsreferences/frontmatter-guide.md -- Complete YAML frontmatter field reference (name, description, platform, env vars, config, credentials)references/quality-rubric.md -- 10-dimension scoring rubric with 1-10 scales, examples, and score interpretationreferences/skill-examples.md -- Annotated excerpts from top skills showing why specific patterns work© himself65, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 7 other files (references) in plugins/skill-creator/skills/skill-creator of himself65/finance-skills.
Open the folder on GitHubat commit 01fc7b4
Skill Creator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Skill Creator this skillhimself65/finance-skills | 3.4k | — | ~3.8k | Automated safety check: Pass | MIT | |
| Waza Skill Evaluatormicrosoft/waza | 1.4k | — | ~2k | Automated safety check: Pass | MIT | |
| Waza Interactivemicrosoft/waza | 1.4k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Skill CreatorZS520L/HanakoPro | 102 | — | ~7.4k | Automated safety check: Pass | Apache-2.0 | |
| Skill CreatorAzure/azqr | 794 | 89 repos | ~8.2k | Automated safety check: Pass | Apache-2.0 | |
| Darwin Skill Optimizeralchaincyf/darwin-skill | 6.2k | 1 repos | ~4.7k | Automated safety check: Pass | MIT |
microsoft/waza
Evaluates agent skills with a Go CLI that runs YAML-defined benchmarks, compares runs and scores the quality of SKILL.md frontmatter.
microsoft/waza
Walks you through creating, running and reading waza evals for an agent skill, then proposes concrete fixes when tasks fail or the score is low.
ZS520L/HanakoPro
Create new skills, modify and improve existing skills, and measure skill performance.
Azure/azqr
Create new skills, modify and improve existing skills, and measure skill performance.
alchaincyf/darwin-skill
Scores SKILL.md files on a nine-dimension rubric, then improves them in a keep-or-revert loop with independent judge agents, test prompts, git history and human checkpoints.
rohitg00/ai-engineering-from-scratch
Evaluates an Agent Skill bundle before release for structure, trigger quality, artifact improvement, script correctness, safety, installed-tree integrity and host portability.
himself65/finance-skills
Estimate a public company's intrinsic value with DCF, relative (peer multiple), and sum-of-the-parts (SOTP) methods, then blend them into an implied share price with upside/downside vs the market…
himself65/finance-skills
Read Discord for financial research through opencli connected to the Discord desktop app: servers, channels, members, recent messages in the active channel, and message search.
himself65/finance-skills
Build a pre-earnings briefing for a stock from Yahoo Finance data (yfinance): the upcoming report date and timing, consensus EPS and revenue estimates with their range, the beat/miss track record…
himself65/finance-skills
Analyze a company's most recent (or a specified past) earnings report from Yahoo Finance data (yfinance): actual vs estimated EPS, surprise size, revenue and margin trends, and the stock's price…
himself65/finance-skills
Analyze sell-side analyst estimates and how they are changing, using Yahoo Finance data (yfinance): EPS and revenue consensus by period, estimate ranges and dispersion, revision trends over…
himself65/finance-skills
Query Fintel (fintel.io) institutional market data through its REST API or official MCP server.
Categories
Create, improve, and evaluate agent skills (SKILL.md plus reference files). Skill Creator is an agent skill from himself65/finance-skills.md plus reference files).
Skill Creator fits situations like: the user wants to build; design a new skill; fix an existing skill that isnt working well; benchmark a skills quality.
Run `npx skills add himself65/finance-skills --skill skill-creator -a claude-code`. Or copy the skill folder (plugins/skill-creator/skills/skill-creator in himself65/finance-skills) into .claude/skills/skill-creator in your project. Claude Code loads it when a task matches its description.
Run `npx skills add himself65/finance-skills --skill skill-creator -a codex`. Or copy the skill folder (plugins/skill-creator/skills/skill-creator in himself65/finance-skills) into .agents/skills/skill-creator in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add himself65/finance-skills --skill skill-creator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/skill-creator, .gemini/skills/skill-creator, .github/skills/skill-creator and .opencode/skills/skill-creator in your project.
Going by SKILL.md and its folder, Skill Creator needs the command-line tools its instructions call (gh, git and curl) and credentials named API_KEY. Our summary lists: Python 3; A credential in API_KEY.
SKILL.md contains no URLs. Its commands use gh, git and curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Skill Creator is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 15k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Skill Creator: Waza Skill Evaluator (microsoft/waza, 1.4k stars), Waza Interactive (microsoft/waza, 1.4k stars), Skill Creator (ZS520L/HanakoPro, 102 stars) and Skill Creator (Azure/azqr, 794 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
himself65 (a GitHub user) maintains it in himself65/finance-skills, which has 3,382 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 5, 2026.
Source: himself65/finance-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.