Published: Apr 9, 2026 by Isaac Johnson
I had two things I wanted to tackle today: Comparing using Anthropic via Pi CLI versus Claude Code, then taking a look at Gemma4 - the new open model Google released last week. In this article, I want to dig into Gemma4 more thoroughly rather than rush an article just to get on the headline bandwagon.
As I’ll get into below, the first section (Pi vs Claude) came from a user request via LinkedIn. I tend to avoid Anthropic just due to price.
Anthropic CLI vs Pi
Sam Hegge asked me if I could compare Claude Code versus Pi CLI as a comment on my last LI post which was about the Pi agent how it compared to Claude CLI.
I focus on Gemini CLI mostly because I’m generally Google-first, but also because Gemini AI Pro is covered and Anthropic usage tends to cost me.
That said, it’s a fair question - How might Pi work compared to Claude? I’m willing to feed AI some coins to see.
Anthropic setup with Pi
You just need to set an Anthropic key in your environment for Pi to pick up:
$ export ANTHROPIC_API_KEY=sk-ant-api03-X-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
$ pi
Now when I ask for models, we can see the latest Anthropic ones listed:
I picked the latest claude-3-7-sonnet-latest to use.
I actually have a desire to make some skills today, so I will actually use a Skill builder Skill for this activity.
I found a good one from Anthropic here: https://github.com/anthropics/skills/blob/main/skills/skill-creator/SKILL.md
I actually already keep a local clone of Anthropic’s primary Skills library, so I just need to update it:
builder@DESKTOP-QADGF36:~/Workspaces/skills/skills$ ls
algorithmic-art canvas-design docx internal-comms pdf skill-creator theme-factory webapp-testing
brand-guidelines doc-coauthoring frontend-design mcp-builder pptx slack-gif-creator web-artifacts-builder xlsx
builder@DESKTOP-QADGF36:~/Workspaces/skills/skills$ cd ..
builder@DESKTOP-QADGF36:~/Workspaces/skills$ git remote show origin
* remote origin
Fetch URL: https://github.com/anthropics/skills.git
Push URL: https://github.com/anthropics/skills.git
HEAD branch: main
Remote branches:
andibrae/create-top-level-namespace tracked
klazuka/add-3p-notices tracked
klazuka/add-cc-instructions tracked
klazuka/add-cc-marketplace tracked
klazuka/doc-skills tracked
klazuka/export tracked
klazuka/export-20260203 new (next fetch will store in remotes/origin)
klazuka/frontend-design-skill tracked
klazuka/pptx-cleanup new (next fetch will store in remotes/origin)
klazuka/spec tracked
mahesh/add-to-readme tracked
mahesh/clarify-claude-code-install tracked
main tracked
mattpic-ant/blog-small-fix tracked
Local branch configured for 'git pull':
main merges with remote main
Local ref configured for 'git push':
main pushes to main (local out of date)
builder@DESKTOP-QADGF36:~/Workspaces/skills$ git pull
remote: Enumerating objects: 226, done.
remote: Counting objects: 100% (12/12), done.
remote: Total 226 (delta 12), reused 12 (delta 12), pack-reused 214 (from 1)
Receiving objects: 100% (226/226), 293.56 KiB | 2.39 MiB/s, done.
Resolving deltas: 100% (60/60), completed with 5 local objects.
From https://github.com/anthropics/skills
69c0b1a..98669c1 main -> origin/main
* [new branch] klazuka/export-20260203 -> origin/klazuka/export-20260203
* [new branch] klazuka/pptx-cleanup -> origin/klazuka/pptx-cleanup
Updating 69c0b1a..98669c1
Fast-forward
.claude-plugin/marketplace.json | 10 +
skills/claude-api/LICENSE.txt | 202 ++
skills/claude-api/SKILL.md | 262 +++
skills/claude-api/csharp/claude-api.md | 402 ++++
skills/claude-api/curl/examples.md | 216 +++
skills/claude-api/go/claude-api.md | 421 +++++
skills/claude-api/java/claude-api.md | 432 +++++
skills/claude-api/php/claude-api.md | 375 ++++
skills/claude-api/python/agent-sdk/README.md | 355 ++++
skills/claude-api/python/agent-sdk/patterns.md | 359 ++++
skills/claude-api/python/claude-api/README.md | 420 +++++
skills/claude-api/python/claude-api/batches.md | 185 ++
skills/claude-api/python/claude-api/files-api.md | 165 ++
skills/claude-api/python/claude-api/streaming.md | 162 ++
skills/claude-api/python/claude-api/tool-use.md | 590 ++++++
skills/claude-api/ruby/claude-api.md | 113 ++
skills/claude-api/shared/error-codes.md | 206 ++
skills/claude-api/shared/live-sources.md | 121 ++
skills/claude-api/shared/models.md | 119 ++
skills/claude-api/shared/prompt-caching.md | 128 ++
skills/claude-api/shared/tool-use-concepts.md | 305 +++
skills/claude-api/typescript/agent-sdk/README.md | 297 +++
skills/claude-api/typescript/agent-sdk/patterns.md | 209 +++
skills/claude-api/typescript/claude-api/README.md | 333 ++++
skills/claude-api/typescript/claude-api/batches.md | 106 ++
skills/claude-api/typescript/claude-api/files-api.md | 98 +
skills/claude-api/typescript/claude-api/streaming.md | 178 ++
skills/claude-api/typescript/claude-api/tool-use.md | 527 ++++++
skills/docx/SKILL.md | 659 +++++--
skills/docx/docx-js.md | 350 ----
skills/docx/ooxml.md | 610 ------
skills/docx/ooxml/scripts/pack.py | 159 --
skills/docx/ooxml/scripts/unpack.py | 29 -
skills/docx/ooxml/scripts/validate.py | 69 -
skills/docx/ooxml/scripts/validation/docx.py | 274 ---
skills/docx/scripts/__init__.py | 2 +-
skills/docx/scripts/accept_changes.py | 135 ++
skills/docx/scripts/comment.py | 318 ++++
skills/docx/scripts/document.py | 1276 -------------
skills/docx/scripts/office/helpers/__init__.py | 0
skills/docx/scripts/office/helpers/merge_runs.py | 199 ++
skills/docx/scripts/office/helpers/simplify_redlines.py | 197 ++
skills/docx/scripts/office/pack.py | 159 ++
skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-chart.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-main.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-picture.xsd | 0
.../docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd | 0
.../{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/pml.xsd | 0
.../office}/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd | 0
.../docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd | 0
.../office}/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd | 0
.../office}/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd | 0
.../office}/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd | 0
.../office}/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd | 0
.../office}/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-math.xsd | 0
.../{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/sml.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-main.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd | 0
.../docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd | 0
.../docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd | 0
.../{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/wml.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/xml.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-contentTypes.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-coreProperties.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-digSig.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-relationships.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/mce/mc.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/microsoft/wml-2010.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/microsoft/wml-2012.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/microsoft/wml-2018.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/microsoft/wml-cex-2018.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/microsoft/wml-cid-2016.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/microsoft/wml-sdtdatahash-2020.xsd | 0
skills/docx/{ooxml => scripts/office}/schemas/microsoft/wml-symex-2015.xsd | 0
skills/docx/scripts/office/soffice.py | 183 ++
skills/docx/scripts/office/unpack.py | 132 ++
skills/docx/scripts/office/validate.py | 111 ++
skills/docx/{ooxml/scripts/validation => scripts/office/validators}/__init__.py | 0
skills/{pptx/ooxml/scripts/validation => docx/scripts/office/validators}/base.py | 310 +---
skills/docx/scripts/office/validators/docx.py | 446 +++++
skills/{pptx/ooxml/scripts/validation => docx/scripts/office/validators}/pptx.py | 44 +-
skills/docx/{ooxml/scripts/validation => scripts/office/validators}/redlining.py | 74 +-
skills/docx/scripts/templates/comments.xml | 4 +-
skills/docx/scripts/templates/commentsExtended.xml | 4 +-
skills/docx/scripts/templates/commentsExtensible.xml | 4 +-
skills/docx/scripts/templates/commentsIds.xml | 4 +-
skills/docx/scripts/templates/people.xml | 4 +-
skills/docx/scripts/utilities.py | 374 ----
skills/pdf/SKILL.md | 34 +-
skills/pdf/forms.md | 283 ++-
skills/pdf/scripts/check_bounding_boxes.py | 5 -
skills/pdf/scripts/check_bounding_boxes_test.py | 226 ---
skills/pdf/scripts/check_fillable_fields.py | 1 -
skills/pdf/scripts/convert_pdf_to_images.py | 2 -
skills/pdf/scripts/create_validation_image.py | 4 -
skills/pdf/scripts/extract_form_field_info.py | 32 +-
skills/pdf/scripts/extract_form_structure.py | 115 ++
skills/pdf/scripts/fill_fillable_fields.py | 16 -
skills/pdf/scripts/fill_pdf_form_with_annotations.py | 61 +-
skills/pptx/SKILL.md | 652 ++-----
skills/pptx/editing.md | 205 ++
skills/pptx/html2pptx.md | 625 -------
skills/pptx/ooxml.md | 427 -----
skills/pptx/ooxml/scripts/pack.py | 159 --
skills/pptx/ooxml/scripts/unpack.py | 29 -
skills/pptx/ooxml/scripts/validate.py | 69 -
skills/pptx/ooxml/scripts/validation/docx.py | 274 ---
skills/pptx/pptxgenjs.md | 420 +++++
skills/pptx/scripts/__init__.py | 0
skills/pptx/scripts/add_slide.py | 195 ++
skills/pptx/scripts/clean.py | 286 +++
skills/pptx/scripts/html2pptx.js | 979 ----------
skills/pptx/scripts/inventory.py | 1020 ----------
skills/pptx/scripts/office/helpers/__init__.py | 0
skills/pptx/scripts/office/helpers/merge_runs.py | 199 ++
skills/pptx/scripts/office/helpers/simplify_redlines.py | 197 ++
skills/pptx/scripts/office/pack.py | 159 ++
skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-chart.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-main.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-picture.xsd | 0
.../pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd | 0
.../{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/pml.xsd | 0
.../office}/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd | 0
.../pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd | 0
.../office}/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd | 0
.../office}/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd | 0
.../office}/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd | 0
.../office}/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd | 0
.../office}/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-math.xsd | 0
.../{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/sml.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-main.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd | 0
.../pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd | 0
.../pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd | 0
.../{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/wml.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/xml.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-contentTypes.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-coreProperties.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-digSig.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-relationships.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/mce/mc.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/microsoft/wml-2010.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/microsoft/wml-2012.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/microsoft/wml-2018.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/microsoft/wml-cex-2018.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/microsoft/wml-cid-2016.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/microsoft/wml-sdtdatahash-2020.xsd | 0
skills/pptx/{ooxml => scripts/office}/schemas/microsoft/wml-symex-2015.xsd | 0
skills/pptx/scripts/office/soffice.py | 183 ++
skills/pptx/scripts/office/unpack.py | 132 ++
skills/pptx/scripts/office/validate.py | 111 ++
skills/pptx/{ooxml/scripts/validation => scripts/office/validators}/__init__.py | 0
skills/{docx/ooxml/scripts/validation => pptx/scripts/office/validators}/base.py | 310 +---
skills/pptx/scripts/office/validators/docx.py | 446 +++++
skills/{docx/ooxml/scripts/validation => pptx/scripts/office/validators}/pptx.py | 44 +-
skills/pptx/{ooxml/scripts/validation => scripts/office/validators}/redlining.py | 74 +-
skills/pptx/scripts/rearrange.py | 231 ---
skills/pptx/scripts/replace.py | 385 ----
skills/pptx/scripts/thumbnail.py | 399 ++--
skills/skill-creator/SKILL.md | 555 +++---
skills/skill-creator/agents/analyzer.md | 274 +++
skills/skill-creator/agents/comparator.md | 202 ++
skills/skill-creator/agents/grader.md | 223 +++
skills/skill-creator/assets/eval_review.html | 146 ++
skills/skill-creator/eval-viewer/generate_review.py | 471 +++++
skills/skill-creator/eval-viewer/viewer.html | 1325 +++++++++++++
skills/skill-creator/references/output-patterns.md | 82 -
skills/skill-creator/references/schemas.md | 430 +++++
skills/skill-creator/references/workflows.md | 28 -
skills/skill-creator/scripts/__init__.py | 0
skills/skill-creator/scripts/aggregate_benchmark.py | 401 ++++
skills/skill-creator/scripts/generate_report.py | 326 ++++
skills/skill-creator/scripts/improve_description.py | 247 +++
skills/skill-creator/scripts/init_skill.py | 303 ---
skills/skill-creator/scripts/package_skill.py | 40 +-
skills/skill-creator/scripts/quick_validate.py | 14 +-
skills/skill-creator/scripts/run_eval.py | 310 ++++
skills/skill-creator/scripts/run_loop.py | 328 ++++
skills/skill-creator/scripts/utils.py | 47 +
skills/xlsx/SKILL.md | 21 +-
skills/xlsx/recalc.py | 178 --
skills/xlsx/scripts/office/helpers/__init__.py | 0
skills/xlsx/scripts/office/helpers/merge_runs.py | 199 ++
skills/xlsx/scripts/office/helpers/simplify_redlines.py | 197 ++
skills/xlsx/scripts/office/pack.py | 159 ++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd | 1499 +++++++++++++++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd | 146 ++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd | 1085 +++++++++++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd | 11 +
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd | 3081 ++++++++++++++++++++++++++++++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd | 23 +
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd | 185 ++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd | 287 +++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd | 1676 +++++++++++++++++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd | 28 +
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd | 144 ++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd | 174 ++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd | 25 +
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd | 18 +
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd | 59 +
.../xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd | 56 +
.../scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd | 195 ++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd | 582 ++++++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd | 25 +
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd | 4439 ++++++++++++++++++++++++++++++++++++++++++++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd | 570 ++++++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd | 509 +++++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd | 12 +
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd | 108 ++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd | 96 +
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd | 3646 ++++++++++++++++++++++++++++++++++++
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd | 116 ++
skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd | 42 +
skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd | 50 +
skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd | 49 +
skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd | 33 +
skills/xlsx/scripts/office/schemas/mce/mc.xsd | 75 +
skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd | 560 ++++++
skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd | 67 +
skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd | 14 +
skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd | 20 +
skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd | 13 +
skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd | 4 +
skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd | 8 +
skills/xlsx/scripts/office/soffice.py | 183 ++
skills/xlsx/scripts/office/unpack.py | 132 ++
skills/xlsx/scripts/office/validate.py | 111 ++
skills/xlsx/scripts/office/validators/__init__.py | 15 +
skills/xlsx/scripts/office/validators/base.py | 847 +++++++++
skills/xlsx/scripts/office/validators/docx.py | 446 +++++
skills/xlsx/scripts/office/validators/pptx.py | 275 +++
skills/xlsx/scripts/office/validators/redlining.py | 247 +++
skills/xlsx/scripts/recalc.py | 184 ++
249 files changed, 41029 insertions(+), 10062 deletions(-)
create mode 100644 skills/claude-api/LICENSE.txt
create mode 100644 skills/claude-api/SKILL.md
create mode 100644 skills/claude-api/csharp/claude-api.md
create mode 100644 skills/claude-api/curl/examples.md
create mode 100644 skills/claude-api/go/claude-api.md
create mode 100644 skills/claude-api/java/claude-api.md
create mode 100644 skills/claude-api/php/claude-api.md
create mode 100644 skills/claude-api/python/agent-sdk/README.md
create mode 100644 skills/claude-api/python/agent-sdk/patterns.md
create mode 100644 skills/claude-api/python/claude-api/README.md
create mode 100644 skills/claude-api/python/claude-api/batches.md
create mode 100644 skills/claude-api/python/claude-api/files-api.md
create mode 100644 skills/claude-api/python/claude-api/streaming.md
create mode 100644 skills/claude-api/python/claude-api/tool-use.md
create mode 100644 skills/claude-api/ruby/claude-api.md
create mode 100644 skills/claude-api/shared/error-codes.md
create mode 100644 skills/claude-api/shared/live-sources.md
create mode 100644 skills/claude-api/shared/models.md
create mode 100644 skills/claude-api/shared/prompt-caching.md
create mode 100644 skills/claude-api/shared/tool-use-concepts.md
create mode 100644 skills/claude-api/typescript/agent-sdk/README.md
create mode 100644 skills/claude-api/typescript/agent-sdk/patterns.md
create mode 100644 skills/claude-api/typescript/claude-api/README.md
create mode 100644 skills/claude-api/typescript/claude-api/batches.md
create mode 100644 skills/claude-api/typescript/claude-api/files-api.md
create mode 100644 skills/claude-api/typescript/claude-api/streaming.md
create mode 100644 skills/claude-api/typescript/claude-api/tool-use.md
delete mode 100644 skills/docx/docx-js.md
delete mode 100644 skills/docx/ooxml.md
delete mode 100755 skills/docx/ooxml/scripts/pack.py
delete mode 100755 skills/docx/ooxml/scripts/unpack.py
delete mode 100755 skills/docx/ooxml/scripts/validate.py
delete mode 100644 skills/docx/ooxml/scripts/validation/docx.py
create mode 100755 skills/docx/scripts/accept_changes.py
create mode 100755 skills/docx/scripts/comment.py
delete mode 100755 skills/docx/scripts/document.py
create mode 100644 skills/docx/scripts/office/helpers/__init__.py
create mode 100644 skills/docx/scripts/office/helpers/merge_runs.py
create mode 100644 skills/docx/scripts/office/helpers/simplify_redlines.py
create mode 100755 skills/docx/scripts/office/pack.py
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-chart.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-main.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-picture.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/pml.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-math.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/sml.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-main.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/wml.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/xml.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-contentTypes.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-coreProperties.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-digSig.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-relationships.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/mce/mc.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/microsoft/wml-2010.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/microsoft/wml-2012.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/microsoft/wml-2018.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/microsoft/wml-cex-2018.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/microsoft/wml-cid-2016.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/microsoft/wml-sdtdatahash-2020.xsd (100%)
rename skills/docx/{ooxml => scripts/office}/schemas/microsoft/wml-symex-2015.xsd (100%)
create mode 100644 skills/docx/scripts/office/soffice.py
create mode 100755 skills/docx/scripts/office/unpack.py
create mode 100755 skills/docx/scripts/office/validate.py
rename skills/docx/{ooxml/scripts/validation => scripts/office/validators}/__init__.py (100%)
rename skills/{pptx/ooxml/scripts/validation => docx/scripts/office/validators}/base.py (71%)
create mode 100644 skills/docx/scripts/office/validators/docx.py
rename skills/{pptx/ooxml/scripts/validation => docx/scripts/office/validators}/pptx.py (79%)
rename skills/docx/{ooxml/scripts/validation => scripts/office/validators}/redlining.py (72%)
delete mode 100755 skills/docx/scripts/utilities.py
delete mode 100644 skills/pdf/scripts/check_bounding_boxes_test.py
create mode 100755 skills/pdf/scripts/extract_form_structure.py
create mode 100644 skills/pptx/editing.md
delete mode 100644 skills/pptx/html2pptx.md
delete mode 100644 skills/pptx/ooxml.md
delete mode 100755 skills/pptx/ooxml/scripts/pack.py
delete mode 100755 skills/pptx/ooxml/scripts/unpack.py
delete mode 100755 skills/pptx/ooxml/scripts/validate.py
delete mode 100644 skills/pptx/ooxml/scripts/validation/docx.py
create mode 100644 skills/pptx/pptxgenjs.md
create mode 100644 skills/pptx/scripts/__init__.py
create mode 100755 skills/pptx/scripts/add_slide.py
create mode 100755 skills/pptx/scripts/clean.py
delete mode 100755 skills/pptx/scripts/html2pptx.js
delete mode 100755 skills/pptx/scripts/inventory.py
create mode 100644 skills/pptx/scripts/office/helpers/__init__.py
create mode 100644 skills/pptx/scripts/office/helpers/merge_runs.py
create mode 100644 skills/pptx/scripts/office/helpers/simplify_redlines.py
create mode 100755 skills/pptx/scripts/office/pack.py
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-chart.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-main.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-picture.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/pml.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-math.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/sml.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-main.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/wml.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ISO-IEC29500-4_2016/xml.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-contentTypes.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-coreProperties.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-digSig.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/ecma/fouth-edition/opc-relationships.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/mce/mc.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/microsoft/wml-2010.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/microsoft/wml-2012.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/microsoft/wml-2018.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/microsoft/wml-cex-2018.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/microsoft/wml-cid-2016.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/microsoft/wml-sdtdatahash-2020.xsd (100%)
rename skills/pptx/{ooxml => scripts/office}/schemas/microsoft/wml-symex-2015.xsd (100%)
create mode 100644 skills/pptx/scripts/office/soffice.py
create mode 100755 skills/pptx/scripts/office/unpack.py
create mode 100755 skills/pptx/scripts/office/validate.py
rename skills/pptx/{ooxml/scripts/validation => scripts/office/validators}/__init__.py (100%)
rename skills/{docx/ooxml/scripts/validation => pptx/scripts/office/validators}/base.py (71%)
create mode 100644 skills/pptx/scripts/office/validators/docx.py
rename skills/{docx/ooxml/scripts/validation => pptx/scripts/office/validators}/pptx.py (79%)
rename skills/pptx/{ooxml/scripts/validation => scripts/office/validators}/redlining.py (72%)
delete mode 100755 skills/pptx/scripts/rearrange.py
delete mode 100755 skills/pptx/scripts/replace.py
create mode 100644 skills/skill-creator/agents/analyzer.md
create mode 100644 skills/skill-creator/agents/comparator.md
create mode 100644 skills/skill-creator/agents/grader.md
create mode 100644 skills/skill-creator/assets/eval_review.html
create mode 100644 skills/skill-creator/eval-viewer/generate_review.py
create mode 100644 skills/skill-creator/eval-viewer/viewer.html
delete mode 100644 skills/skill-creator/references/output-patterns.md
create mode 100644 skills/skill-creator/references/schemas.md
delete mode 100644 skills/skill-creator/references/workflows.md
create mode 100644 skills/skill-creator/scripts/__init__.py
create mode 100755 skills/skill-creator/scripts/aggregate_benchmark.py
create mode 100755 skills/skill-creator/scripts/generate_report.py
create mode 100755 skills/skill-creator/scripts/improve_description.py
delete mode 100755 skills/skill-creator/scripts/init_skill.py
create mode 100755 skills/skill-creator/scripts/run_eval.py
create mode 100755 skills/skill-creator/scripts/run_loop.py
create mode 100644 skills/skill-creator/scripts/utils.py
delete mode 100644 skills/xlsx/recalc.py
create mode 100644 skills/xlsx/scripts/office/helpers/__init__.py
create mode 100644 skills/xlsx/scripts/office/helpers/merge_runs.py
create mode 100644 skills/xlsx/scripts/office/helpers/simplify_redlines.py
create mode 100755 skills/xlsx/scripts/office/pack.py
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/mce/mc.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd
create mode 100644 skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd
create mode 100644 skills/xlsx/scripts/office/soffice.py
create mode 100755 skills/xlsx/scripts/office/unpack.py
create mode 100755 skills/xlsx/scripts/office/validate.py
create mode 100644 skills/xlsx/scripts/office/validators/__init__.py
create mode 100644 skills/xlsx/scripts/office/validators/base.py
create mode 100644 skills/xlsx/scripts/office/validators/docx.py
create mode 100644 skills/xlsx/scripts/office/validators/pptx.py
create mode 100644 skills/xlsx/scripts/office/validators/redlining.py
create mode 100755 skills/xlsx/scripts/recalc.py
builder@DESKTOP-QADGF36:~/Workspaces/skills$ ls
README.md THIRD_PARTY_NOTICES.md skills spec template
builder@DESKTOP-QADGF36:~/Workspaces/skills$ ls skills/
algorithmic-art canvas-design doc-coauthoring frontend-design mcp-builder pptx slack-gif-creator web-artifacts-builder xlsx
brand-guidelines claude-api docx internal-comms pdf skill-creator theme-factory webapp-testing
I noticed since I updated last, they removed claude-api. Wonder if the leaks of their code had anything to do with that.
My mode of using skills is to sym-link or copy them in the more global ~/.agent/skills
I’ll go ahead and link that skill creator there
$ ln -s /home/builder/Workspaces/skills/skills/skill-creator /home/builder/.agents/skills/skill-creator
My second habit is to aggregate my newly created skills into their own private GIT repo
Since I actually care about these now, I’ll do a backup to Codeberg (always good to do 2 homes for GIT)
Now that that is sorted, let’s clone our own agentskills repo to build something
builder@DESKTOP-QADGF36:~/Workspaces$ git clone https://forgejo.freshbrewed.science/builderadmin/agentskills.git
Cloning into 'agentskills'...
remote: Enumerating objects: 11, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 11 (delta 1), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (11/11), 4.07 KiB | 4.07 MiB/s, done.
Resolving deltas: 100% (1/1), done.
builder@DESKTOP-QADGF36:~/Workspaces$ cd agentskills/
builder@DESKTOP-QADGF36:~/Workspaces/agentskills$ nvm use lts/jod
Now using node v22.22.0 (npm v10.9.4)
I fired up Pi and tried to load my skill.. seems i need to feed the pig…
I have auto-reload disabled so when it’s out it’s out. So i fed it a $20
Anthropic also does this use it or lose it thing
So that’s another reason I’m not a giant fan of them, even if their tooling is pretty good.
My next issue was Sonnet 3.7 isn’t available.. I think my eyes just screwed that up seeing the “.7”.. 4.6 is the latest, not 3.7
I can use the Skill creator with “/skill:skill-creator” - this makes Pi definitely load that creator skill for our next step.
Loading the skill already cost me 7c
Let’s now build a skill out with Sonnet 4.6
As we can see, that took about 5 minutes with Pi and cost about US$0.395
Claude native
Let’s now fire up Claude natively in the same directory
As we can see, it can create a new Helm Chart skill, but it loves to launch agents in Parallel which I fear is going to cost me.
it finished
And it did build out a skill
builder@DESKTOP-QADGF36:~/Workspaces/agentskills$ tree ./helm-charts-workspace/
./helm-charts-workspace/
└── iteration-1
├── benchmark.json
├── benchmark.md
├── eval-1
│ ├── eval_metadata.json
│ ├── with_skill
│ │ └── run-1
│ │ ├── grading.json
│ │ ├── outputs
│ │ │ ├── Chart.yaml
│ │ │ ├── templates
│ │ │ │ ├── NOTES.txt
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── deployment.yaml
│ │ │ │ ├── ingress.yaml
│ │ │ │ ├── namespace.yaml
│ │ │ │ ├── pvc.yaml
│ │ │ │ └── service.yaml
│ │ │ └── values.yaml
│ │ └── timing.json
│ └── without_skill
│ └── run-1
│ ├── grading.json
│ ├── outputs
│ │ ├── Chart.yaml
│ │ ├── templates
│ │ │ ├── NOTES.txt
│ │ │ ├── _helpers.tpl
│ │ │ ├── deployment.yaml
│ │ │ ├── ingress.yaml
│ │ │ ├── namespace.yaml
│ │ │ ├── pvc.yaml
│ │ │ └── service.yaml
│ │ └── values.yaml
│ └── timing.json
├── eval-2
│ ├── eval_metadata.json
│ ├── with_skill
│ │ └── run-1
│ │ ├── grading.json
│ │ ├── outputs
│ │ │ ├── Chart.yaml
│ │ │ ├── templates
│ │ │ │ ├── NOTES.txt
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── deployment.yaml
│ │ │ │ └── service.yaml
│ │ │ └── values.yaml
│ │ └── timing.json
│ └── without_skill
│ └── run-1
│ ├── grading.json
│ ├── outputs
│ │ ├── Chart.yaml
│ │ ├── templates
│ │ │ ├── NOTES.txt
│ │ │ ├── _helpers.tpl
│ │ │ ├── deployment.yaml
│ │ │ └── service.yaml
│ │ └── values.yaml
│ └── timing.json
└── eval-3
├── eval_metadata.json
├── with_skill
│ └── run-1
│ ├── grading.json
│ ├── outputs
│ │ ├── templates
│ │ │ ├── ingress.yaml
│ │ │ └── namespace.yaml
│ │ └── values_ingress_section.yaml
│ └── timing.json
└── without_skill
└── run-1
├── grading.json
├── outputs
│ ├── templates
│ │ ├── ingress.yaml
│ │ └── namespace.yaml
│ └── values_ingress_section.yaml
└── timing.json
28 directories, 53 files
But cost me at least $2.30
I think that’s why heavy users quickly switch from the free model with pay-per-token to a Claude Pro or Max plan
Gemma 4
I’m on my Windows box at the moment, so let’s pull down Gemma4 which dropped in Ollama just last night
While it would appear I could download with my Ollama
I’m prompted to upgrade them moment i try and use it
In Windows, I don’t know a great way to just tell it to pull a model other than launch from system tray and try and use it. The first time you do it downloads the model of which you seek
Let’s ask a coding question about Perl and see what it comes back with. I’ll pause a few times, but leave the timer up
That took about 2 minutes. This is pretty promising especially because my desktop nVidia 3070 only has 8Gb dedicated memory so it’s not ‘giant’ (my new laptop has 12Gb, but let’s keep with Windows for the moment).
My next test will use Gemma4 in VS Code by way of Continue.dev’s plugin. My plugin uses JSON, but yours might use YAML
"models": [
{
"title": "gemma4:e4b",
"provider": "ollama",
"model": "gemma4:e4b"
},
...
]
I worked through making a service skill
Many times over, it would get stuck making files and i would nudge it along. In the end, I just made the files for it and put in the contents. While i spent roughly 30m on this, I was also distracted and reading some articles so it was more like 15m to get the the work done.
I wanted to see if any of the charts were a bit borked, so I did a local test:
$ helm install --dry-run --debug myfakeskill ./helm-chart/
install.go:225: 2026-04-03 09:17:27.184010461 -0500 CDT m=+0.282573365 [debug] Original chart version: ""
install.go:242: 2026-04-03 09:17:27.184974141 -0500 CDT m=+0.283537045 [debug] CHART PATH: /home/builder/Workspaces/agentskills/python-app-setup/helm-chart
Error: INSTALLATION FAILED: template: fastapi-service/templates/secret.yaml:10:21: executing "fastapi-service/templates/secret.yaml" at <.Values.secret.apiKeyValue>: nil pointer evaluating interface {}.apiKeyValue
helm.go:86: 2026-04-03 09:17:27.265751891 -0500 CDT m=+0.364314795 [debug] template: fastapi-service/templates/secret.yaml:10:21: executing "fastapi-service/templates/secret.yaml" at <.Values.secret.apiKeyValue>: nil pointer evaluating interface {}.apiKeyValue
INSTALLATION FAILED
main.newInstallCmd.func2
helm.sh/helm/v3/cmd/helm/install.go:158
github.com/spf13/cobra.(*Command).execute
github.com/spf13/cobra@v1.8.1/command.go:985
github.com/spf13/cobra.(*Command).ExecuteC
github.com/spf13/cobra@v1.8.1/command.go:1117
github.com/spf13/cobra.(*Command).Execute
github.com/spf13/cobra@v1.8.1/command.go:1041
main.main
helm.sh/helm/v3/cmd/helm/helm.go:85
runtime.main
runtime/proc.go:283
runtime.goexit
runtime/asm_amd64.s:1700
Let’s now try to fix this with Pi using our locally hosted models
I’ll create (or update) ~/.pi/agent/models.json
{
"providers": {
"ollama": {
"baseUrl": "http://192.168.1.160:11434/v1",
"api": "openai-completions",
"apiKey": "ollama",
"models": [
{ "id": "gemma4:e4b" },
{ "id": "qwen3:latest" }
]
}
}
}
Now, most will use localhost for the baseURL. But I found WSL doesn’t “see” my windows hosted Ollama and if i use Ollama in WSL, it doesn’t properly see my nVidia card. So even tho this is running in WSL on that exact host, I’m using my local IP seen in Windows (192.168.1.160) for the address.
Let’s ask Pi (using Gemma4) to fix it
It took about 2:40 to come up with it’s first idea for a fix, which required me to confirm (though Pi didn’t really suggest that, i just wrote “yes, do that” and hit enter).
However, over and over it would claim to do an edit but then just sit there. i ran that 3 times
OpenCode
Like Pi, there is another local CLI we can use with Ollama, Opencode
builder@DESKTOP-QADGF36:~/Workspaces/agentskills$ npm i -g opencode-ai
added 5 packages in 8s
I need to create a local opencode json file with models
builder@DESKTOP-QADGF36:~/Workspaces/agentskills$ cat opencode.json
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama (local)",
"options": {
"baseURL": "http://192.168.1.160:11434/v1"
},
"models": {
"gemma4:e4b": {
"name": "gemma4"
}
}
}
}
}
It picked up the Anthropic key so I need to move to the gemma4 model I defined
I’ll feed the same prompt
This will kick in as it talks to Ollama in Windows
But it too failed
Here I feel like the guy with a Roomba who keeps setting it on top of the same piece of trash instead of just picking it up.
Fine, I’ll fix the damn error myself.
When we see:
Error: INSTALLATION FAILED: template: fastapi-service/templates/secret.yaml:10:26: executing “fastapi-service/templates/secret.yaml” at <.Values.secret.apiKeyValue>: nil pointer evaluating interface {}.apiKeyValue helm.go:86: 2026-04-03 14:35:03.126362357 -0500 CDT m=+0.433510017 [debug] template: fastapi-service/templates/secret.yaml:10:26: executing “fastapi-service/templates/secret.yaml” at <.Values.secret.apiKeyValue>: nil pointer evaluating interface {}.apiKeyValue
It is pretty clear that the secret should be wrapped in an if block and exposed in the values file.
We need to wrap it with an if, ie.g
{{- if .Values.secret.enabled }}
apiVersion: v1
kind: Secret
metadata:
name: {{ include "chart.fullname" . }}-secret
labels:
{{- include "chart.labels" . | nindent 2 }}
type: Opaque
data:
# Example data key/value pair
api_key: {{ with .Values.secret.apiKeyValue }}{{ . | b64enc }}{{ end }}
{{- end }}
Then drop an enable (which is false by default) in the values
secret:
enabled: false
apiKeyValue: ""
I fixed the ingress and serviceaccount yamls and then it worked.
Commentary: Those who say you can just vibe code and don’t need to know things are fooling themselves.
Using the Skills we made with Pi and Gemma4
Again, just as before, you’ll see I have to nudge it along…
It made a start but really it just gave a start and couldn’t get much farther.
Gemini CLI
I plan to just try Gemini CLI now to see if it can finish the job
I’ll give it the same prompt:
Create a containerized Perl app using the perl-app-setup skill. The app should show a list of todos as stored locally in a local datastore and let the user check off items and add new items. they can also delete items.
It very quickly wrapped up, mostly using the Gemini 2.5 flash and 3 flash models
Testing
Let’s test the candidate work.
I’ll do a quick docker build
builder@DESKTOP-QADGF36:~/Workspaces/newApp$ docker build -t todo-app .
[+] Building 64.9s (17/17) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 801B 0.0s
=> [internal] load metadata for docker.io/library/perl:5.38 1.3s
=> [internal] load metadata for docker.io/library/perl:5.38-slim 1.3s
=> [auth] library/perl:pull token for registry-1.docker.io 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 158B 0.0s
=> [builder 1/6] FROM docker.io/library/perl:5.38@sha256:53060e111843f9b002cdea543dba7bfed54ff78e84b4abdf3b8df00451ea59c6 41.2s
=> => resolve docker.io/library/perl:5.38@sha256:53060e111843f9b002cdea543dba7bfed54ff78e84b4abdf3b8df00451ea59c6 0.0s
=> => sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B 0.3s
=> => sha256:47077a70fcc3f1fb0ef4638f82fd22d1b93ab6a3e98e64f66a157f4ce9ebedba 2.50kB / 2.50kB 0.0s
=> => sha256:53060e111843f9b002cdea543dba7bfed54ff78e84b4abdf3b8df00451ea59c6 9.01kB / 9.01kB 0.0s
=> => sha256:c663d63fb5298262de60d5e229e4b408d4c354795fe8019e9c8ccb6456a26613 5.83kB / 5.83kB 0.0s
=> => sha256:8f6ad858d0a46fa8ee628532c70b8dc82d06179d543b0b09ec19fc03d4c5b373 49.30MB / 49.30MB 4.1s
=> => sha256:b012eb15dff0bce418c03ec940325aee6aa4300d771c325728855697e620c63a 25.62MB / 25.62MB 3.4s
=> => sha256:ee3a0e7d77f0c84203cab438fcf345647c8121bbd80506a3c692f8608a14c4f4 67.78MB / 67.78MB 7.2s
=> => sha256:8688d0f2f567884eb217c6f80efa063bdb13a1951e92e6c5cac1ae5b736f5e1b 236.08MB / 236.08MB 12.9s
=> => sha256:6623c4016360f6a494137f7a0696634876fd3b5f84b642440e829aca640bd3b2 1.37kB / 1.37kB 4.3s
=> => extracting sha256:8f6ad858d0a46fa8ee628532c70b8dc82d06179d543b0b09ec19fc03d4c5b373 3.6s
=> => sha256:dd84d29e92517951df8c584ef70adac3b219a9e94e47073c3477b437fee3d6d3 15.56MB / 15.56MB 6.0s
=> => sha256:5c58bc0a198b5b32b37cf1fa1d2fc7bd96b5b9145df52faecab5106829908cff 132B / 132B 6.3s
=> => extracting sha256:b012eb15dff0bce418c03ec940325aee6aa4300d771c325728855697e620c63a 1.4s
=> => extracting sha256:ee3a0e7d77f0c84203cab438fcf345647c8121bbd80506a3c692f8608a14c4f4 5.3s
=> => extracting sha256:8688d0f2f567884eb217c6f80efa063bdb13a1951e92e6c5cac1ae5b736f5e1b 23.1s
=> => extracting sha256:6623c4016360f6a494137f7a0696634876fd3b5f84b642440e829aca640bd3b2 0.0s
=> => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0.0s
=> => extracting sha256:dd84d29e92517951df8c584ef70adac3b219a9e94e47073c3477b437fee3d6d3 2.4s
=> => extracting sha256:5c58bc0a198b5b32b37cf1fa1d2fc7bd96b5b9145df52faecab5106829908cff 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 11.19kB 0.0s
=> [runtime 1/4] FROM docker.io/library/perl:5.38-slim@sha256:877a0596aa8b5ef64dd7bde002fac9da4fbcebdc727927ee3cb36d520ad8a5dc 8.3s
=> => resolve docker.io/library/perl:5.38-slim@sha256:877a0596aa8b5ef64dd7bde002fac9da4fbcebdc727927ee3cb36d520ad8a5dc 0.0s
=> => sha256:c3507f6b13e970e15b0a7f80894ebaf5585dcc16d37c13332bcd4ace74cf9de1 1.37kB / 1.37kB 0.4s
=> => sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B 0.3s
=> => sha256:877a0596aa8b5ef64dd7bde002fac9da4fbcebdc727927ee3cb36d520ad8a5dc 9.02kB / 9.02kB 0.0s
=> => sha256:b82b5ea7daa1a0755078a5297c8ecdf26e7ae43e8e759a372e1df8d0f7570dc9 1.92kB / 1.92kB 0.0s
=> => sha256:77f07f06f0362b7b34dcaed39280b3ea0f8ec3b0d21492b86b5071e2fa5a7b69 4.75kB / 4.75kB 0.0s
=> => sha256:ec781dee3f4719c2ca0dd9e73cb1d4ed834ed1a406495eb6e44b6dfaad5d1f8f 29.78MB / 29.78MB 1.5s
=> => sha256:444f25e108e264b00dae5fb350a4fbac78784586273ef37f290bdd3c8889599f 31.60MB / 31.60MB 2.9s
=> => sha256:e1debe2bad764c01de94cf2890688af6b6128e923bca730b5814a2696dd457f5 132B / 132B 0.7s
=> => extracting sha256:ec781dee3f4719c2ca0dd9e73cb1d4ed834ed1a406495eb6e44b6dfaad5d1f8f 2.3s
=> => extracting sha256:c3507f6b13e970e15b0a7f80894ebaf5585dcc16d37c13332bcd4ace74cf9de1 0.0s
=> => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0.0s
=> => extracting sha256:444f25e108e264b00dae5fb350a4fbac78784586273ef37f290bdd3c8889599f 3.8s
=> => extracting sha256:e1debe2bad764c01de94cf2890688af6b6128e923bca730b5814a2696dd457f5 0.0s
=> [runtime 2/4] WORKDIR /app 1.3s
=> [builder 2/6] WORKDIR /app 1.8s
=> [builder 3/6] RUN cpan App::cpanminus && apt-get update && apt-get install -y --no-install-recommends build-essential 11.8s
=> [builder 4/6] COPY cpanfile . 0.0s
=> [builder 5/6] RUN cpanm --installdeps --notest . 6.3s
=> [builder 6/6] COPY . . 0.0s
=> [runtime 3/4] COPY --from=builder /usr/local/lib/perl5 /usr/local/lib/perl5 0.7s
=> [runtime 4/4] COPY --from=builder /app . 0.0s
=> exporting to image 0.6s
=> => exporting layers 0.5s
=> => writing image sha256:91c275518148c8e09222cd3c9c1f3db6719bd4105156aabd3cd11035e538f29c 0.0s
=> => naming to docker.io/library/todo-app 0.0s
Running it shows this is just a command line app
builder@DESKTOP-QADGF36:~/Workspaces/newApp$ docker run -it --rm -v $(pwd)/data:/app/data todo-app -l
No todos found.
builder@DESKTOP-QADGF36:~/Workspaces/newApp$ docker run -it --rm -v $(pwd)/data:/app/data todo-app
No todos found.
I suppose I never demanded it be web-based. I can just add a task and see it listed
builder@DESKTOP-QADGF36:~/Workspaces/newApp$ perl bin/app.pl --add "Complete the coding challenge"
Added todo: Complete the coding challenge (ID: 1)
builder@DESKTOP-QADGF36:~/Workspaces/newApp$ docker run -it --rm -v $(pwd)/data:/app/data todo-app
ID | Status | Description
----------------------------------------
1 | [ ] | Complete the coding challenge
Testing Python app skill
Let’s now test the Kubernetes service Python app skill
$ ln -s /home/builder/Workspaces/agentskills/python-app-setup /home/builder/.agents/skills/python-app-setup
I’m going to set a higher autocomplete and set steering and followup to all
I’m going to pick the skill to sort of prime the pump on it
My hope is that with Python, it might move faster than with Perl (which is arguably older and less common).
But time and time again, it failed to actually dot he work it planned
However, when I moved to my Linux laptop and ran the same prompt:
Create a new project based on the guidelines from the skill my-python-app-skill. It should be a Todo app that is exposed via kubernetes and has a web interface. do not confirm each step, just proceed
It went way faster and had no issues writing files
I decided to test again using Gemma via Continue.dev.
This time I would use the larger video card in the gaming laptop (which is on 192.168.1.220), but with my local windows VS Code
{
"models": [
{
"title": "gemma4:e4b",
"provider": "ollama",
"model": "gemma4:e4b"
},
{
"model": "gemma4:e4b",
"title": "gemma4:e4b (Legion)",
"completionOptions": {},
"apiBase": "http://192.168.1.220:11434",
"provider": "ollama"
},
{
"model": "gemma4:26b",
"title": "gemma4:26b (Legion)",
"completionOptions": {},
"apiBase": "http://192.168.1.220:11434",
"provider": "ollama"
},
...
I could get it to list files, but not read them when trying to create an Ansible index:
using the @files just sends it to lunch and it never returns.
I pivoted to Pi in WSL, but using the more powerful laptop (updating the ~/.pi/agent/models.json)
I used . to try and tell Gemma4 to ‘move it along’
But it didn’t update the index
I tried several rounds with qwen3.5 as well, being very explicit in my ask - it too failed
I even tried Ollama code
Is my ask too hard? I needed to sanity check it against Gemini CLI
This just used the flash model and knocked it out.
Research
Let’s put a pin in GenAI coding for now. How about just general research?
It made a table, but it’s not readable - likely an Ollama Code issue more than a model issue
It immediately forgot it’s last request, so i just rephrased without asking for a table and got a good start for an article
I’m not a finance guy, so I wouldn’t really write a piece like that, but I might ask for some examples to punch up a topic I am writing about:
This could be a windows issue, but for the life of me I couldn’t get Ollama code to stop truncating the tables. I did, however, figure out a workaround - just use a ridiculous large terminal window
Summary
The first part of this article covered a user request to review Anthropics Claude Code versus using the same models in Pi.
The behavior of Claude code was to kick out up to 6 agents to do things, then come back and another 6 agents to evaluate and judge the work. The output in the end was fine, but it also wasn’t particularly fast. I found the time I spent building out the helm chart skill with Claude Code was about the same as it was building perl app skill. The quality might be better with helm but at what price?
I spent about US$0.35 making the Perl skill and about US$2.30 with Claude Code making the helm chart one. Both used the Anthropic “skill builder” skill. Assuming the quality is similar, I might use Pi from here on out. However, as a “free tier” user that pays per token, the money factor might really be my underlying driver.
Next we looked at Gemma4, which Google dropped just last week. It’s quite thorough and gave good answers. I tested it in VS Code with Continue.dev, Opencode, Ollama-code and Pi. I used Windows and Linux. Overall, I had better success with Pi and Opencode in Linux than anything else.
However, for coding work, Gemma4 is so damn timid. It just wants to check constantly back with the user. When you are using lightweight coding agents without much memory, this becomes a real issue as it just keeps forgetting what it was just asking you about and starts back over. I had really limited success with all my approaches. I just wanted to tell Gemma4 “just do the damn thing and don’t ask me!” but regardless of how I would phrase things, it would quickly forget and fail to write files.
To sanity check, I would pivot over to a Github free version of Copilot, or using Gemini CLI with Gemini 3 Flash/Flash lite and each time they would complete the work.
I will own that this could be a user error, some kind of “me problem” that needs more investigation.
When I pivoted to using Gemma4 for ideaation it did fantastic. While I’m not planning to write blog posts on refinancing, using it to come up with ideas for MCP vs Skills is something I might do. The use case here for such things becomes apparent when you are in the life phase with kids in sports.
Often I’ll be killing time in the backfield of Softball practice or in a swimming pool area built like a Faraday cage and just unable to get signal. Having an LLM option to help come up with ideas is really useful.
My common case is I’ll be writing a blog, or updating a deck for a presentation and find one area is kind of light on examples. I’ll ask the LLM something like “provide 5 common ways to migrate a vSphere hosted windows VM to GCP Compute Engine” and then of the 5 returned, 3 might sound plausible to me and get me going again. It can help provide that spark when my mental matches are wet.






































