Most agent loops still do one of two dumb things with the web: paste the whole HTML into context, or hope the model “summarizes” a URL it never actually fetched.
Skillware 0.5.5 adds two new installable skills and hardens a third — all meant to drop into whatever loop you already run (Gemini, Claude, OpenAI, Ollama, etc.). Same pattern as before: load_skill, adapt tool schema, call execute() on tool use.
Here is what changed for agents, not for framework tourists.
Read a page without paying for the chrome
Skill: data_engineering/semantic_web_proxy (new)
Give an agent a URL (or HTML you already have). It returns Markdown, plain text, or JSON — boilerplate stripped, tables optional, comments optional. You also get token savings: original vs semantic counts, and optionally how much of your context window you just freed.
Useful when the agent needs docs, news, filings, forum threads — anything where nav bars and cookie banners are noise.
It is deterministic Python (trafilatura). No LLM inside the skill. No “ask GPT to summarize the page.”
Safety bits that matter in production:
- SSRF guard on fetch — private/loopback/reserved hosts rejected, redirects re-checked every hop
- If the page is probably client-rendered, you get
page_likely_requires_javascriptinstead of an empty payload and false confidence
pip install "skillware[data_engineering_semantic_web_proxy]"
from skillware.core.loader import SkillLoader
bundle = SkillLoader.load_skill("data_engineering/semantic_web_proxy")
skill = bundle["class"]()
result = skill.execute({
"url": "https://example.com/investors/q4",
"output_format": "markdown",
"context_window": 200_000,
})
print(result["token_savings"]["reduction_pct"], result["semantic_payload"][:500])
Offline demo (no network): examples/semantic_web_proxy_demo.py
Pair it with security/prompt_injection_firewall if the page is untrusted before it hits the model.
Build a .pptx from JSON — no Canva API, no “make slides” prompt roulette
Skill: creative/deck_builder (new)
Your agent (or your pipeline) produces a structured deck spec: title slide, bullets, two-column, table, chart, image slots, speaker notes. The skill validates it, applies a bundled 16:9 template (pitch, corporate, or minimal), writes a normal PowerPoint file to disk.
Deterministic. Offline. Editable output — not a screenshot, not a PDF export hack.
Actions: validate_spec, render, inspect, list_templates.
pip install "skillware[creative_deck_builder]"
from skillware.core.loader import SkillLoader
bundle = SkillLoader.load_skill("creative/deck_builder")
skill = bundle["class"]()
spec = {
"title": "Q3 update",
"template_id": "pitch_v1",
"slides": [
{"type": "title", "title": "Q3 update", "subtitle": "For the team"},
{"type": "bullets", "title": "Wins", "bullets": ["Shipped semantic web proxy", "UK CH loops stable"]},
],
}
check = skill.execute({"action": "validate_spec", "deck_spec": spec})
print(check["status"])
out = skill.execute({"action": "render", "deck_spec": spec, "output_path": "q3.pptx"})
print(out["output_path"])
Demo: examples/deck_builder_demo.py
UK Companies House: multi-turn pipelines that do not fall apart
Skill: finance/uk_companies_house_handler v1.2.1 (upgrade, not brand new)
If you tried the UK registry skill in a real chat loop, you probably hit awkward partial states — pipelines that wanted to finish in one turn, context that grew weird keys, composite actions that routed through the wrong helper.
v1.2.1 is a stabilization pass for hosts:
-
run_pipelineexecutes one step per turn — you see intermediate results, user can steer - Composite actions (
resolve_and_get_officers, etc.) run directly when that is the right move - Session context trimmed to what matters (
company_number,company_name, …) -
status: "partial"only when a pipeline genuinely has remaining steps - Empty officer/filing lists return
agent_hintso the model does not hallucinate a cheerful summary over zero rows
New example: examples/claude_uk_companies_house_handler.py — multi-turn Claude loop with disambiguation when Companies House returns multiple “BP”s.
Breaking if you pinned v1.2.0: map_intent now returns steps, not suggested_pipeline; next_actions is gone. Upgrade notes in the changelog.
Smaller but real: Claude tool names
Registry IDs use slashes (finance/uk_companies_house_handler). Claude’s API does not. to_claude_tool() now sanitizes names; example scripts were aligned. If your loop broke on Claude with “invalid tool name,” this is the fix.
Install
pip install -U skillware
# or pin:
pip install skillware==0.5.5
Per-skill extras:
pip install "skillware[data_engineering_semantic_web_proxy]"
pip install "skillware[creative_deck_builder]"
pip install "skillware[finance_uk_companies_house_handler]"
Browse what ships: skillware list · skill library
Links
- Repo: https://github.com/ARPAHLS/skillware
- Release: https://github.com/ARPAHLS/skillware/releases/tag/v0.5.5
- Changelog: https://github.com/ARPAHLS/skillware/blob/v0.5.5/CHANGELOG.md
- Semantic web proxy catalog: https://skillware.site/skills/data_engineering/semantic_web_proxy
- Deck builder catalog: https://skillware.site/skills/creative/deck_builder
Contributors this cycle: @rizzoMartin (semantic web proxy), @tusharjamunkar (deck builder), @Areen-09 (UK CH v1.2.1). Skill proposals welcome on GitHub.
Maintained by ARPA Hellenic Logical Systems. Enterprise workflows: skills@arpacorp.net