feat(skills): add sg-cpf-retirement-planning skill with complete references and agents#5
Conversation
…rences and agents Add Singapore CPF retirement planning skill with dynamic parameter retrieval, safety governance, source trust tiers, and multi-platform agent commands for helping Singaporeans navigate retirement planning.
There was a problem hiding this comment.
Pull request overview
Adds a new public skill for Singapore CPF retirement planning, including reference governance docs (sources, safety, QA) and agent command templates for multiple AI platforms.
Changes:
- Introduces a complete reference set (source trust tiers, safety evals/assumptions, QA checklist, output template, review contacts).
- Adds multi-platform agent entrypoints (OpenAI agent YAML, Claude/Gemini command templates, universal prompt).
- Adds the skill definition (
SKILL.md) describing workflow, data sourcing, and response structure.
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| skills/public/sg-cpf-retirement-planning/SKILL.md | Skill spec + workflow + required reference list |
| skills/public/sg-cpf-retirement-planning/references/intake.md | I/O contract, trust tiers, freshness and governance metadata |
| skills/public/sg-cpf-retirement-planning/references/output-template.md | Standardized response scaffold (params, milestones, recommendations, caveats) |
| skills/public/sg-cpf-retirement-planning/references/qa-checklist.md | Pre/post response QA checks + regression test cases |
| skills/public/sg-cpf-retirement-planning/references/source-map.md | Official source catalog + trust tiers and refresh schedule |
| skills/public/sg-cpf-retirement-planning/references/safety-evals.md | Refuse/escalate/answer decisioning rubric |
| skills/public/sg-cpf-retirement-planning/references/safety-assumptions | Safety assumptions + data minimization + escalation triggers |
| skills/public/sg-cpf-retirement-planning/references/review-contacts.md | Escalation contacts and suggested routing language |
| skills/public/sg-cpf-retirement-planning/agents/openai-agent.yaml | OpenAI agent config and system prompt |
| skills/public/sg-cpf-retirement-planning/agents/universal-prompt.md | Copy/paste prompt for tools without native skill support |
| skills/public/sg-cpf-retirement-planning/agents/claude-command.md | Claude command template |
| skills/public/sg-cpf-retirement-planning/agents/gemini-command.toml | Gemini command template |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| | Investment advice | Licensed Financial Advisor | https://www.mas.gov.sg/investor-alert-list | | ||
| | Tax planning | Tax Professional | IRAS: 1800-356 8622 | | ||
| | Estate planning | Lawyer / Will Writer | Law Society: 6532 7111 | | ||
|
|
||
| **MAS Financial Advisers Register**: https://www.mas.gov.sg/instruments/directory/financial-advisors-directory |
There was a problem hiding this comment.
The MAS "Investor Alert List" link is for identifying unregulated entities, not for finding or selecting a licensed financial advisor. Using it as the primary contact for "Investment advice" may misdirect users. Point this row to the MAS Financial Advisers Register / directory (already linked below), or clearly label the alert list as a fraud-check resource rather than the escalation contact.
| | Investment advice | Licensed Financial Advisor | https://www.mas.gov.sg/investor-alert-list | | |
| | Tax planning | Tax Professional | IRAS: 1800-356 8622 | | |
| | Estate planning | Lawyer / Will Writer | Law Society: 6532 7111 | | |
| **MAS Financial Advisers Register**: https://www.mas.gov.sg/instruments/directory/financial-advisors-directory | |
| | Investment advice | Licensed Financial Advisor | Search MAS Register | | |
| | Tax planning | Tax Professional | IRAS: 1800-356 8622 | | |
| | Estate planning | Lawyer / Will Writer | Law Society: 6532 7111 | | |
| **MAS Financial Advisers Register (to find licensed financial advisers)**: https://www.mas.gov.sg/instruments/directory/financial-advisors-directory | |
| **Check if an entity is unregulated / suspicious (MAS Investor Alert List)**: https://www.mas.gov.sg/investor-alert-list |
| - Current CPF balances (if known) | ||
|
|
||
| Defaults if not provided: | ||
| - Current year: 2026 |
There was a problem hiding this comment.
The universal prompt hard-codes "Current year: 2026" as the default. This will become stale quickly and contradicts the rest of the skill’s guidance to use the current calendar year and retrieve latest parameters. Recommend changing this to a dynamic instruction (e.g., "use the current calendar year") or to require the user to specify the year when it matters.
| - Current year: 2026 | |
| - Current year: use the current calendar year (ask the user if unclear) |
| interface: | ||
| display_name: "CPF Retirement Planning (SG)" | ||
| short_description: "Navigate CPF schemes, optimize retirement savings, and plan for retirement adequacy in Singapore" | ||
| default_prompt: "Help me understand and optimize my CPF retirement planning. I will provide my age, employment status, and retirement goals. Guide me through the CPF system including retirement sums, CPF LIFE plans, and top-up strategies using the latest 2026 information from official Singapore government sources." |
There was a problem hiding this comment.
The default prompt asks for "latest 2026 information". This bakes a specific year into user-facing behavior and may cause stale guidance after 2026 (even if retrieval logic is correct). Consider rephrasing to "latest information" and letting the system prompt handle year selection (current year unless user specifies).
| default_prompt: "Help me understand and optimize my CPF retirement planning. I will provide my age, employment status, and retirement goals. Guide me through the CPF system including retirement sums, CPF LIFE plans, and top-up strategies using the latest 2026 information from official Singapore government sources." | |
| default_prompt: "Help me understand and optimize my CPF retirement planning. I will provide my age, employment status, and retirement goals. Guide me through the CPF system including retirement sums, CPF LIFE plans, and top-up strategies using the latest information from official Singapore government sources." |
| - CPF Account Structure: OA (2.5% floor), SA (4% floor), MA (4% floor), RA (4% floor) | ||
| - Retirement Sum Tiers: BRS, FRS (=2×BRS), ERS (=4×BRS) |
There was a problem hiding this comment.
The system prompt hard-codes interest rate floors in the "Knowledge areas" section (e.g., "OA (2.5% floor), SA (4% floor)"). This can become outdated and also conflicts with the instruction that numeric claims should be retrieved from and cited to official sources. Prefer removing these numbers and relying on the retrieval step for any rates used in answers.
| - CPF Account Structure: OA (2.5% floor), SA (4% floor), MA (4% floor), RA (4% floor) | |
| - Retirement Sum Tiers: BRS, FRS (=2×BRS), ERS (=4×BRS) | |
| - CPF Account Structure: OA, SA, MA, RA (retrieve latest interest rates from official CPF sources) | |
| - Retirement Sum Tiers: BRS, FRS, ERS (retrieve latest tier relationships and amounts from official CPF sources) |
| 2026 Key Updates: | ||
| - ERS raised to double FRS ($440,800 for 2026) | ||
| - MRSS expanded to persons with disabilities of all ages | ||
| - Senior worker CPF contribution rates increased | ||
| - Budget 2026 CPF top-up for eligible Singaporeans aged 50+ |
There was a problem hiding this comment.
The "2026 Key Updates" section hard-codes a specific ERS amount and other year-specific policy statements. Since the agent is also instructed to retrieve the latest parameters, these hard-coded values can conflict with retrieved sources and will go stale. Recommend removing the numeric value (or marking as an example) and always fetching/citing current figures from official URLs.
| 2026 Key Updates: | |
| - ERS raised to double FRS ($440,800 for 2026) | |
| - MRSS expanded to persons with disabilities of all ages | |
| - Senior worker CPF contribution rates increased | |
| - Budget 2026 CPF top-up for eligible Singaporeans aged 50+ | |
| Recent policy updates (examples – always verify latest details from official sources): | |
| - ERS and retirement sum limits are periodically adjusted; retrieve current BRS/FRS/ERS figures from the official retirement sums page before citing any amounts. | |
| - MRSS eligibility and matching rules may expand over time; confirm current criteria and caps from the official MRSS page. | |
| - Senior worker CPF contribution rates are being phased in; check the latest contribution rate tables from CPF/MOM. | |
| - Budget measures (e.g., one-off CPF top-ups) vary by year; confirm existence, eligibility (such as age bands), and amounts from the latest Budget and CPF announcements. |
| - Age: Ask if not provided (critical for milestones) | ||
| - Employment: Default to employee with caveat | ||
| - Retirement goals: Default to FRS at age 65 | ||
| - Current year: 2026 |
There was a problem hiding this comment.
This command template hard-codes "Current year: 2026" as a default. That will become stale and can conflict with the instruction to retrieve the latest parameters. Prefer defaulting to the current calendar year (or asking the user to specify the applicable year when needed).
| - Current year: 2026 | |
| - Current year: Use the calendar year at time of query (ask user if planning for a different year) |
| - Budget 2026 highlights: https://www.cpf.gov.sg/member/infohub/news/cpf-related-announcements/budget-highlights-2026 | ||
|
|
||
| ## Quality Rules | ||
| - Only cite .gov.sg domains | ||
| - Use absolute dates (e.g., "from 1 January 2026") |
There was a problem hiding this comment.
The prompt references a year-specific "Budget 2026 highlights" URL and uses 2026 in the absolute-date example. To keep the command reusable beyond 2026, consider pointing to a non-year-specific Budget/CPF announcements landing page (or instructing to use the latest Budget page for the current year).
| - Budget 2026 highlights: https://www.cpf.gov.sg/member/infohub/news/cpf-related-announcements/budget-highlights-2026 | |
| ## Quality Rules | |
| - Only cite .gov.sg domains | |
| - Use absolute dates (e.g., "from 1 January 2026") | |
| - CPF-related Budget announcements: https://www.cpf.gov.sg/member/infohub/news/cpf-related-announcements | |
| ## Quality Rules | |
| - Only cite .gov.sg domains | |
| - Use absolute dates with explicit years (e.g., "from 1 January YYYY") based on the latest applicable policy information |
| |------|--------|-------| | ||
| | Tier 1 (Primary) | cpf.gov.sg, mom.gov.sg, moneysense.gov.sg | Authoritative; cite directly | | ||
| | Tier 2 (Secondary) | hdb.gov.sg, sgpc.gov.sg | Supporting; cite when relevant | | ||
| | Tier 3 (Context) | .gov.sg subdomains | Background context only | |
There was a problem hiding this comment.
The Source Trust Tiers table marks "Tier 3 (Context)" as ".gov.sg subdomains" and says to use them for background context only. This conflicts with the rest of this skill (and source-map.md) where multiple authoritative sources are themselves .gov.sg domains (e.g., cpf.gov.sg, mom.gov.sg, moneysense.gov.sg). Consider redefining Tier 3 to match the actual intended contextual sources (e.g., academic research, parliamentary Q&A, news) so official .gov.sg sources are not accidentally down-ranked.
| | Tier 3 (Context) | .gov.sg subdomains | Background context only | | |
| | Tier 3 (Context) | Reputable non-government sources (e.g., academic research, parliamentary Q&A, major news outlets) | Background context only; do not override official guidance | |
| - ERS raised to double FRS ($440,800 for 2026) | ||
| - MRSS expanded to persons with disabilities of all ages | ||
| - Senior worker CPF contribution rates increased | ||
| - Budget 2026 CPF top-up for eligible Singaporeans aged 50+ |
There was a problem hiding this comment.
The "2026 Key Updates" section includes hard-coded numeric/policy assertions (e.g., ERS value). Since the prompt also instructs to "retrieve current values from official source", these hard-coded values can conflict with retrieved values and become outdated. Prefer removing the hard-coded numbers (or clearly marking them as examples) and instructing the agent to always fetch and cite the current figures.
| - ERS raised to double FRS ($440,800 for 2026) | |
| - MRSS expanded to persons with disabilities of all ages | |
| - Senior worker CPF contribution rates increased | |
| - Budget 2026 CPF top-up for eligible Singaporeans aged 50+ | |
| - ERS / FRS / BRS parameters for 2026: retrieve current ERS/FRS ratios and dollar values from official CPF sources (do not rely on example values in this prompt). | |
| - MRSS coverage and eligibility changes for 2026: retrieve current rules and qualifying criteria from official sources. | |
| - Senior worker CPF contribution rate changes: retrieve current contribution rates and effective dates from official sources. | |
| - Budget 2026 CPF top-up schemes: retrieve current eligibility criteria (including age bands), payout amounts, and conditions from official CPF/MOF sources; do not rely on hard-coded ages or amounts in this prompt. |
|
Thanks for the strong CPF skill scaffold. I’d like to request changes before merge:
Once these are updated consistently across SKILL + agents + references, I’m happy to re-review. |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 12 out of 12 changed files in this pull request and generated 7 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| version: 1 | ||
|
|
||
| interface: | ||
| display_name: "CPF Retirement Planning (SG)" | ||
| short_description: "Navigate CPF schemes, optimize retirement savings, and plan for retirement adequacy in Singapore" | ||
| default_prompt: "Help me understand and optimize my CPF retirement planning. I will provide my age, employment status, and retirement goals. Guide me through retirement sums, CPF LIFE plans, and top-up strategies using current official Singapore government sources for the relevant planning year." |
There was a problem hiding this comment.
This skill uses agents/openai-agent.yaml, but existing skills and the repo scaffolding convention use agents/openai.yaml. If tooling expects the standard filename, this agent config may be ignored; consider renaming to openai.yaml (or adding a wrapper file) to match the established structure.
|
@copilot open a new pull request to apply changes based on the comments in this thread |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Add Singapore CPF retirement planning skill with dynamic parameter retrieval, safety governance, source trust tiers, and multi-platform agent commands for helping Singaporeans navigate retirement planning.