ワンクリックで
start
Главно меню на coinskills — статус спрямо целите, налични инструменти. Използва се при стартиране на нова сесия с coinskills.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Главно меню на coinskills — статус спрямо целите, налични инструменти. Използва се при стартиране на нова сесия с coinskills.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Решава дали потребителят може да си позволи покупка/разход/разсрочване. Auto-triggered by natural language — use whenever the user asks "can I afford X", "should I buy Y", "how should I finance Z", "can I afford this", "трябва ли да купя", "мога ли да си позволя", "should I take this loan", "is this a good purchase". Recommends payment method (card/account/installments/liquidation) and explains impact on every active goal.
Управление на финансови цели — създаване, редакция, преглед, приключване (achieve/abandon). Използва се за CRUD върху goals/. Goals are the spine — every other skill references them.
Периодичен преглед — месечен/тримесечен/годишен доклад. Use at period close or whenever the user asks for a financial report ("monthly review", "how did Q1 go", "year in review", "месечен отчет"). Goal progress is the top section; transactions come second.
Анализ на финансовото състояние спрямо целите — тенденции в харчене, нетна стойност, разпределение, паричен поток. Triggered by "how am I doing", "where do I spend the most", "what's my allocation", "как се справям", "къде харча най-много", "каква е алокацията ми".
Бързо вписване на транзакция, доход или промяна в баланс. Used ad-hoc — "платих 42 в Lidl", "received 3200 salary", "credit card balance is now -340". Parses free-form Bulgarian/English input, identifies account/category/amount, appends to monthly ledger, updates accounts.json balance.
One-shot migration from v0.1 workspace to v0.2 schema. Creates changes.jsonl, snapshots/, .backups/, adds funding_mode + prerequisites + status enum to goals, prompts for _estimated flags on accounts.
| name | start |
| description | Главно меню на coinskills — статус спрямо целите, налични инструменти. Използва се при стартиране на нова сесия с coinskills. |
This skill is the front door to coinskills. Every session begins here. It locates your workspace, loads your profile and active goals, computes net worth against the latest snapshot, and renders a concise status block so you can see at a glance where you stand. It then suggests the most relevant next action based on the state of your goals and review cadence — no manual navigation required. After rendering the status block and suggestion, it waits for your input.
Schema version gate. Read <workspace>/profile.md frontmatter. If schema_version != 2 (or absent), print:
v0.2 features require migration. Run
/coinskills:migratefirst.
Exit. Do NOT proceed.
Load aggregate state via snapshot. Follow skills/_shared/snapshot-compute.md. The snapshot provides liquidity (disposable, emergency_buffer, monthly_expenses, monthly_capacity), per-goal prereqs_met and projected_completion, and warnings (every _estimated field). Use these values directly — do not recompute unless the snapshot is stale.
Goal references in output: always render as <title> (<id>). Example: Emergency fund 6mo (emergency-fund-6mo). Never bare ids.
Read the file ~/.coinskills-workspace. This file is a plain text file or symlink written by /coinskills:init containing the absolute path to the user's workspace repo (one line, no trailing newline required).
cat ~/.coinskills-workspace
If the file exists and contains a valid path, store that path as <workspace> and proceed.
If the file does not exist, or the path it contains does not exist on disk, stop and display:
No coinskills workspace found. Run
/coinskills:initto set one up — it will create your profile, a private GitHub repo, and seed your first goals.
Do not proceed further.
If the file exists but the path is a directory that has no profile.md, treat it as uninitialized and display the same message above.
Read the following files from <workspace>:
<workspace>/profile.md — parse the YAML frontmatter to extract:
namecurrencymodules (list)preferences.review_cadence (monthly | quarterly | yearly)preferences.decision_style<workspace>/goals/*.md — list all .md files in the goals/ directory. For each file, parse the YAML frontmatter and keep only the files where status: active. For each active goal, extract:
idtitletypetarget_amountcurrencydeadlinepriorityLatest snapshot (if present) — look for files in <workspace>/snapshots/. The relevant snapshot for the status block is a net-worth snapshot. Look for snapshots/net-worth.json or any file in snapshots/ whose name contains net-worth. If found, parse the JSON array and take the last entry (highest index). Extract:
date → store as <snapshot_date>value → store as <snapshot_net_worth>breakdown → optional, used for displayIf no snapshot exists, <snapshot_net_worth> and <snapshot_date> are null.
<workspace>/accounts.json — read the JSON array. Compute current net worth:
net_worth = sum(balance for all accounts)
Positive balances add, negative balances (debts/credit cards) subtract. This is the current net worth.
Delta — if <snapshot_net_worth> is not null:
delta = net_worth - snapshot_net_worth
Format as +{amount} if positive, -{amount} if negative, 0 if zero.
If no prior snapshot exists, display Δ n/a (first session).
Latest plan per active goal — for each active goal with id = <goal-id>, look for files matching <workspace>/plans/<goal-id>-v*.md. Find the file with the highest version number. Parse its frontmatter to get:
monthly_contributionprojection (on-track | behind | ahead)status — only use the plan if status: activeIf no active plan file exists for a goal, that goal has no plan.
Progress per active goal — for each active goal, compute progress as:
linked_accounts, sum their balances from accounts.json. Use this as progress.progress is unknown — display as ?.status_tag per active goal — compute using the following rules:
no-planprojection is on-track → on-trackprojection is behind:
behind ?d.behind {N}dprojection is ahead → ahead {N}d (same approach for N)behind ?d or ahead ?d rather than failing.Last review date — list files in <workspace>/reviews/*.md. Recognise three filename shapes written by /coinskills:review: monthly YYYY-MM.md, quarterly YYYY-QN.md (N is 1–4), yearly YYYY.md. Parse the date from the filename (use the first day of the month / quarter / year as the comparison anchor) and pick the most recent. If no review files exist, <last_review_date> is null.
Print the following status block exactly, substituting the values gathered in Step 2. Preserve the emoji characters, indentation, and line structure precisely:
👋 Hi {name}
📊 Net worth: {currency} {amount} (Δ {delta} vs last snapshot)
🎯 Active goals:
• {title} — {progress}/{target} ({status_tag})
📦 Modules: {modules}
Rules for substitution:
{name} — value of name from profile.md{currency} — value of currency from profile.md{amount} — net_worth, formatted as a number with two decimal places (e.g. 12450.00). If accounts.json does not exist or is empty, display unknown.{delta} — formatted delta computed in Step 2 (e.g. +340.00, -120.50, n/a (first session)){title} — goal title from goal frontmatter{progress} — computed progress value (numeric, or ? if unknown){target} — target_amount from goal frontmatter{status_tag} — one of: on-track, behind {N}d, ahead {N}d, no-plan{modules} — comma-separated list from profile.modules (e.g. personal, investments)If there are multiple active goals, repeat the • {title} — ... line once per goal, sorted by priority ascending (priority 1 first).
If there are no active goals, replace the entire 🎯 Active goals: section with:
🎯 Active goals: none
For every goal where snapshot.goals[].status == "blocked":
<title> (<id>) with the unmet-prereqs list from snapshot.goals[].prereqs_met.unmet. Show count: "/ prereqs met".attestation prereq, suggest /coinskills:edit attestation <id> "<label>".Example:
Blocked (waiting on prerequisites):
Mustang Dark Horse (mustang-dark-horse) — 2/5 prereqs met
✗ finish-consumer-credit not complete
✗ savings-revolut < €25,500
○ Praven salary stable for 12 months — attestation pending
run: /coinskills:edit attestation mustang-dark-horse "Praven salary stable for 12 months"
Hide blocked goals from start --concise (default). Show with start --all or always when prereqs newly satisfied.
After the status block, print one blank line, then suggest the next action based on the following rules in priority order. Apply the first matching rule:
Rule 1 — No active goals:
No goals yet. Run `/coinskills:goals` to set your first financial goal — goals are the spine of every skill.
Rule 2 — Active goals without plans:
Identify any active goal that has no active plan file (i.e. no plans/<goal-id>-v*.md with status: active).
Goal "{title}" has no plan yet. Run `/coinskills:plan` to build a contribution strategy.
If multiple goals lack plans, list only the highest-priority one (lowest priority number).
Rule 3 — Overdue review:
Compare <last_review_date> against today's date using review_cadence:
monthly → overdue if <last_review_date> is more than 31 days ago (or null)quarterly → overdue if more than 92 days ago (or null)yearly → overdue if more than 366 days ago (or null)If overdue:
Your last review was {N} days ago (cadence: {review_cadence}). Run `/coinskills:review` when you're ready.
If <last_review_date> is null, display: "No reviews recorded yet. Run /coinskills:review at period end."
Rule 4 — Everything looks good — list all options:
Everything looks on track. What would you like to do?
/coinskills:log — log a transaction or balance update
/coinskills:afford <thing> — "can I afford X?" — full goal-impact decision
/coinskills:analyze — spending trends, net worth, allocation
/coinskills:review — periodic review (monthly / quarterly / yearly)
After rendering the status block and the next-action suggestion, stop and wait for the user's next message.
Do not auto-execute any other skill. Do not chain to /coinskills:goals, /coinskills:plan, /coinskills:review, or any other skill unless the user explicitly asks. The status block is informational — the next action is a suggestion, not a command.
If the user responds with a skill invocation (e.g. /coinskills:log, /coinskills:afford ...), proceed with that skill. If the user types free-form text, respond conversationally and help them decide what to do next, but still do not auto-execute a skill without their explicit request.