Skip to content

Add One-Shot Skills Reliability and Guardrails#397

Open
bpulluta wants to merge 6 commits intomainfrom
feature/skills-pr
Open

Add One-Shot Skills Reliability and Guardrails#397
bpulluta wants to merge 6 commits intomainfrom
feature/skills-pr

Conversation

@bpulluta
Copy link
Collaborator

Summary

This PR hardens the one-shot extraction skills to make setup and iteration more repeatable, simpler to follow, and safer against runtime misconfiguration.

What Changed

  • Updated extraction-run/SKILL.md
    • Added preflight checks before running.
    • Added explicit pass/fail gates:
      • treat runs with zero extracted jurisdictions as failed extraction quality.
      • treat config exceptions in logs as failures even if process exits successfully.
  • Updated yaml-setup/SKILL.md
    • Added non-negotiable runtime constraints.
    • Added canonical required heuristic_keywords structure with all required lists.
    • Added minimal run-config contract that prompts users to provide their own model name and client settings.
  • Updated web-scraper/SKILL.md
    • Added required heuristic list expectations and explicit failure behavior when missing/empty.
    • Normalized keyword naming guidance to canonical forms.
  • Updated schema-creation/SKILL.md
    • Added quality gate requiring smoke runs to produce extracted rows, not just process completion.

Why

users can avoid common setup mistakes and get a working, repeatable baseline faster.

Testing Notes

  • Documentation/skill-only updates.
  • Guidance now reflects validated runtime constraints and triage behavior.

Copilot AI review requested due to automatic review settings March 17, 2026 19:15

This comment was marked as outdated.

This comment was marked as resolved.

@bpulluta

This comment was marked as duplicate.

This comment was marked as duplicate.

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>

This comment was marked as resolved.

@bpulluta
Copy link
Collaborator Author

@copilot open a new pull request to apply changes based on the comments in this thread

Copy link

Copilot AI commented Mar 17, 2026

@bpulluta I've opened a new pull request, #399, to work on those changes. Once the pull request is ready, I'll request review from you.

…rmatting (#399)

* Initial plan

* Fix all review comments in skills documentation

Co-authored-by: bpulluta <115118857+bpulluta@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bpulluta <115118857+bpulluta@users.noreply.github.com>
Copy link
Collaborator

@ppinchuk ppinchuk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @bpulluta! I think this will be super useful for folks who are new to COMPASS and would like to set up a new tech with the help of AI.

My main question is what you envision the extraction-run skill being used for, and how it's different from the schema-creation skill?

Comment on lines +17 to +18
- Schema exists and plugin config points to it.
- You are onboarding a new technology (diesel generator, geothermal, CHP, hydrogen).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aren't these the exact opposite? If a schema exists, you're no longer onboarding a new technology, right?

Comment on lines +76 to +86
| Field | Type | Behavior |
|---|---|---|
| `schema` | string (path) | **Required.** Path to JSON schema file, relative to plugin YAML location. |
| `data_type_short_desc` | string | Short description used in LLM prompts (e.g. `utility-scale <tech> ordinance`). |
| `query_templates` | list | Search query templates; `{jurisdiction}` is replaced at runtime. |
| `website_keywords` | dict | Keyword → score map for URL ranking during website crawl. |
| `heuristic_keywords` | dict or `true` | Pre-LLM text filter. If `true`, LLM generates lists from schema. |
| `collection_prompts` | list or `true` | Text collection prompt(s). If **`true`**, LLM auto-generates from schema. |
| `text_extraction_prompts` | list or `true` | Text consolidation prompt(s). If **`true`**, LLM auto-generates from schema. |
| `extraction_system_prompt` | string | Overrides default LLM system prompt for the extraction step. Use this to scope extraction tightly to the target technology. |
| `cache_llm_generated_content` | bool | Cache LLM-generated `query_templates`, `website_keywords`, and `heuristic_keywords`. Set to `false` when iterating schema to see live changes. |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is already a new keyword for this function. Would it be worthwhile to instead point to a function that the model should read to learn about the input parameters? Otherwise, this will become out of date, as it is right now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants