Install any skill in seconds. Free to start, no credit card required.
Get Started Free →GRC-specific portfolio questionnaire that creates a site-config.json and SITE-PLAN.md tailored to GRC engineers — certifications, frameworks, audit experience, tools, and projects.
.claude/skills/grcengclub-grc-portfolio-planner/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 37% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 23% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 106% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 164% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -9% | 0% |
You are running the /grc-portfolio:plan skill. Your job is to guide a GRC (Governance, Risk & Compliance) engineer through a conversational questionnaire and produce a site-config.json and SITE-PLAN.md configured for a professional GRC portfolio website.
Locate the plugin's bundled scripts (needed later for toolkitDir):
bashfind ~/.claude -path "*/grc-portfolio/scripts/deploy.sh" 2>/dev/null | head -1
Strip /scripts/deploy.sh from the result to get PLUGIN_ROOT. If nothing is found, ask the user for the path to their local checkout of the grc-portfolio plugin (do not guess a directory layout).
Determine the project directory from $ARGUMENTS. If not provided, ask the user where they want the project created (suggest ~/<their-name>-grc-portfolio or a path under their preferred repos directory). Create the directory if it doesn't exist.
Ask these questions (3–4 at a time, conversationally):
Ask which frameworks they specialize in. Present the full list — let them pick all that apply:
SOC 2 | ISO 27001 | NIST 800-53 | FedRAMP | PCI-DSS | HIPAA | CMMC | HITRUST |
GDPR | CIS Controls | DORA | StateRAMP | NIST CSF | NYDFS | Essential Eight |
ISMAP | IRAP | PBMM | CSA CCM | GLBAAlso ask:
Ask about certifications. Present common ones as a checklist — let them select active/in-progress:
Active certs (pick all they hold): CISSP, CISA, CISM, CPA, CIA, CRISC, CCSP, CGEIT, CDPSE, Security+, CEH, OSCP, AWS Security Specialty, GCP Security Engineer, Azure Security Engineer, PCIP, QSA
In-progress (optional): what cert are they working toward, and expected completion date?
Ask:
Ask:
Let them know these are all optional — skip any that don't apply.
Ask:
aws.sesFromEmail: SES-verified sender identity to use as Sourceaws.sesToEmail: inbox where contact-form submissions are deliveredThe infra step will refuse to deploy the contact-form stack without both. Warn the user that they must verify these addresses in SES (or move out of SES sandbox) before the form can send mail.
Read the template from <PLUGIN_ROOT>/templates/site-config-template.json.
Create a site-config.json in the project directory populated with all gathered information:
json{ "projectName": "<kebab-case name>", "projectDir": "<absolute path>", "toolkitDir": "<PLUGIN_ROOT>", "siteType": "portfolio", "client": { "name": "<full name>", "title": "<job title>", "email": "<email>", "location": "<location>", "linkedin": "<url>", "github": "<url or null>", "yearsInGrc": <number>, "summary": "<professional bio>" }, "grc": { "frameworks": ["SOC2", "ISO27001", ...], "specializations": ["Compliance auditing", ...], "industries": ["SaaS/tech", ...], "tools": ["Vanta", "Drata", ...] }, "certifications": { "active": ["CISSP", "CISA", ...], "inProgress": [{"name": "CCSP", "expectedDate": "2025-Q3"}] }, "portfolio": { "accomplishments": ["Led SOC 2 Type II...", ...], "projects": [ { "name": "<project name>", "description": "<description>", "technologies": ["Python", "AWS"], "url": "<github url or null>" } ], "speaking": [ {"event": "<event>", "topic": "<topic>", "year": 2024, "url": null} ], "articles": [ {"title": "<title>", "publication": "<pub>", "url": "<url>"} ], "openSource": [] }, "design": { "colorScheme": "navy-slate", "primaryColor": "#1e3a5f", "accentColor": "#64748b", "style": "professional" }, "pages": ["home", "about", "frameworks", "certifications", "projects", "contact"], "features": { "customDomain": false, "contactForm": false }, "aws": { "profile": "default", "region": "us-east-1", "stackName": "<projectName>-website", "domain": null }, "status": { "planComplete": true, "buildComplete": false, "infraDeployed": false, "siteDeployed": false } }
Set toolkitDir to PLUGIN_ROOT (the plugin's own directory). Set status.planComplete = true.
Read <PLUGIN_ROOT>/templates/SITE-PLAN-TEMPLATE.md as reference. Create a SITE-PLAN.md in the project directory that includes:
/grc-portfolio:build then /grc-portfolio:preflight)Tell the user:
site-config.json and SITE-PLAN.md were createdSITE-PLAN.md and make any edits before building/grc-portfolio:build to scaffold the React projectplan → build → preflight → infra → deploy → repo → cicdPLUGIN_ROOT = resolved from find ~/.claude -path "*/grc-portfolio/scripts/deploy.sh". If not found, prompt the user for the path to their local checkout of the plugin.$ARGUMENTS = arguments passed after /plan (expected: project directory path)| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 12,867 | 5,541 | -57% | 1 | 1 | 0% | 2,190 | 2,527 | +15% | 0 | 0 | — |
case-02 | fail→fail | 7,146 | 5,251 | -27% | 1 | 1 | 0% | 1,238 | 2,493 | +101% | 0 | 0 | — |
case-03 | fail→fail | 10,262 | 6,349 | -38% | 1 | 1 | 0% | 1,748 | 2,760 | +58% | 0 | 0 | — |
case-22 | fail→fail | 29,385 | 7,950 | -73% | 1 | 1 | 0% | 4,940 | 3,571 | -28% | 0 | 0 | — |
case-04 | pass→pass | 3,567 | 2,252 | -37% | 1 | 1 | 0% | 613 | 2,667 | +335% | 0 | 0 | — |
case-05 | pass→pass | 16,369 | 6,053 | -63% | 1 | 1 | 0% | 2,533 | 3,235 | +28% | 0 | 0 | — |
case-06 | fail→pass | 13,015 | 2,988 | -77% | 1 | 1 | 0% | 1,977 | 2,709 | +37% | 0 | 0 | — |
case-07 | fail→pass | 13,502 | 1,881 | -86% | 1 | 1 | 0% | 2,054 | 2,520 | +23% | 0 | 0 | — |
case-08 | fail→pass | 8,414 | 2,132 | -75% | 1 | 1 | 0% | 1,235 | 2,549 | +106% | 0 | 0 | — |
case-09 | fail→pass | 6,430 | 2,420 | -62% | 1 | 1 | 0% | 997 | 2,635 | +164% | 0 | 0 | — |
case-10 | pass→pass | 19,199 | 8,530 | -56% | 1 | 1 | 0% | 2,998 | 3,771 | +26% | 0 | 0 | — |
case-11 | pass→pass | 11,647 | 3,296 | -72% | 1 | 1 | 0% | 1,876 | 2,788 | +49% | 0 | 0 | — |
case-12 | pass→pass | 15,500 | 5,343 | -66% | 1 | 1 | 0% | 2,747 | 3,080 | +12% | 0 | 0 | — |
case-13 | fail→pass | 18,686 | 2,096 | -89% | 1 | 1 | 0% | 2,791 | 2,528 | -9% | 0 | 0 | — |
case-14 | fail→pass | 21,435 | 1,521 | -93% | 1 | 1 | 0% | 3,353 | 2,423 | -28% | 0 | 0 | — |
case-15 | fail→pass | 20,657 | 7,359 | -64% | 1 | 1 | 0% | 3,286 | 3,522 | +7% | 0 | 0 | — |
case-16 | fail→pass | 9,176 | 4,035 | -56% | 1 | 1 | 0% | 1,465 | 2,844 | +94% | 0 | 0 | — |
case-17 | pass→pass | 8,771 | 3,463 | -61% | 1 | 1 | 0% | 1,380 | 2,763 | +100% | 0 | 0 | — |
case-18 | pass→pass | 3,150 | 1,412 | -55% | 1 | 1 | 0% | 512 | 2,402 | +369% | 0 | 0 | — |
case-19 | pass→pass | 12,639 | 6,299 | -50% | 1 | 1 | 0% | 2,269 | 3,205 | +41% | 0 | 0 | — |
case-20 | fail→fail | 30,905 | 6,788 | -78% | 1 | 1 | 0% | 6,191 | 2,592 | -58% | 0 | 0 | — |
case-21 | fail→fail | 6,352 | 7,264 | +14% | 1 | 1 | 0% | 1,101 | 2,612 | +137% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +36 percentage points is the difference between those two pass rates over the 17 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.