DEV Community

Cover image for Agents can strip web pages, build slide decks, and run UK registry lookups across turns — Skillware 0.5.5

Agents can strip web pages, build slide decks, and run UK registry lookups across turns — Skillware 0.5.5

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_javascript instead of an empty payload and false confidence
pip install "skillware[data_engineering_semantic_web_proxy]"
Enter fullscreen mode Exit fullscreen mode
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])
Enter fullscreen mode Exit fullscreen mode

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]"
Enter fullscreen mode Exit fullscreen mode
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"])
Enter fullscreen mode Exit fullscreen mode

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_pipeline executes 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_hint so 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
Enter fullscreen mode Exit fullscreen mode

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]"
Enter fullscreen mode Exit fullscreen mode

Browse what ships: skillware list · skill library


Links

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

Top comments (0)