Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
55adc9d
Initial commit
manykarim Jan 13, 2026
dae9437
feature: Add skills for results and libdoc
manykarim Jan 21, 2026
9bf6586
docs: Add README.md
manykarim Jan 21, 2026
a9cae36
feature: Add skills for Browser, Selenium, Requests, Appium, RestInst…
manykarim Jan 29, 2026
e1e9f88
feature: fix skill errors, e.g. incorrect kws
manykarim Feb 13, 2026
9c718fa
feature: Package skills as Claude Code plugin marketplace
manykarim Feb 23, 2026
91f8918
fix: Remove unused re import in testcase_builder.py
manykarim Feb 23, 2026
d9bf461
fix: Architecture overhaul - fix MCP server, script drift, hooks, tes…
manykarim Mar 17, 2026
a2b0049
fix: sync-skills.sh now transforms SKILL.md for plugin channel
manykarim Mar 17, 2026
f7de22d
feat: CI/release pipelines with multi-agent artifact builds, bump to …
manykarim Mar 17, 2026
5dbd619
fix: Add workflow_call trigger to CI for reusable workflow support
manykarim Mar 17, 2026
17067b2
fix: Add missing pytest install to validate-plugin CI job
manykarim Mar 17, 2026
c18d91c
feat: Shorten skill names for shorter slash commands
manykarim Mar 17, 2026
0dfb8bf
fix: VS Code skill dirs now match name: field per Agent Skills spec
manykarim Mar 17, 2026
68e61dd
chore: Bump version to 1.2.0
manykarim Mar 17, 2026
825ccd6
docs: Update plugin install instructions for claude
manykarim Apr 22, 2026
3c62342
feat: Add skill evaluation harness with DDD architecture, CI pipeline…
manykarim Apr 27, 2026
d74b3df
ci: retrigger skill evaluation after OAuth token fix
manykarim Apr 28, 2026
00b0489
feat(eval): provision skills, harden doctor, validate skill use
manykarim Apr 28, 2026
9d24454
test(eval): add non-RF negative-control task
manykarim Apr 28, 2026
53062b5
feat(eval): activate full plugin in runs (skills, agents, hooks, MCP)
manykarim Apr 28, 2026
f047780
fix(eval): bypassPermissions so plugin hooks fire in headless runs
manykarim Apr 28, 2026
b2bc766
fix(eval): write project-scope settings.json so plugin hooks fire
manykarim Apr 28, 2026
952bc05
docs(eval): document the regression narrow-non-rf-control-01 surfaced
manykarim Apr 28, 2026
23bf4a6
Merge pull request #2 from manykarim/tests/add_skill_evauation_on_ci
manykarim Apr 28, 2026
e1d8fb8
fix(plugin): conditional UserPromptSubmit and Stop hooks
manykarim Apr 28, 2026
6e8912d
fix(eval): bump narrow-rf-injection-positive-01 max_turns 12->16
manykarim Apr 28, 2026
2df12c7
fix(ci): exclude tests/eval from CI Test job's pytest collection
manykarim Apr 28, 2026
cf31ee7
fix(eval): bump narrow-testcase-builder-01 max_turns 8->10
manykarim Apr 28, 2026
c307f37
Merge pull request #3 from manykarim/fix/plugin-hooks
manykarim Apr 28, 2026
59718af
feat(installer): Phase A foundation - package skeleton + Claude Code …
manykarim May 7, 2026
fdf6c81
feat(installer): Phase 2+3 adapters - Codex, Cursor, Goose, OpenCode,…
manykarim May 7, 2026
a4ab086
fix(installer/goose): install skills natively at ~/.agents/skills/
manykarim May 7, 2026
f8e8aaf
fix(installer): align skill paths with current docs (Codex/Cursor/Ope…
manykarim May 7, 2026
ee61e18
feat(installer): Docker test harness — API-free validation across all…
manykarim May 8, 2026
a9c4e1b
fix(ci): install rf-agentskills before pytest so installer tests collect
manykarim May 8, 2026
409f180
chore(plugin): commit rf-agentskills/.mcp.json (was untracked)
manykarim May 8, 2026
b0c2265
Merge pull request #4 from manykarim/feature/installer
manykarim May 8, 2026
0b8a16a
build: declare uv workspace so both packages build from the repo root
manykarim May 12, 2026
2589bd0
build(rf-skill-eval): lock down sdist contents — no more leakage
manykarim May 12, 2026
03b3146
build: distinguish public (rf-agentskills) vs internal (rf-skill-eval)
manykarim May 12, 2026
25c56b3
docs(ci): clarify rf-skill-eval scope in tests/eval ignore comment
manykarim May 12, 2026
1127b62
Merge pull request #5 from manykarim/fix/uv-workspace
manykarim May 12, 2026
7266bee
docs: versioning policy + cross-references between content and tooling
manykarim May 13, 2026
133b897
release(rf-agentskills): bump 0.3.0 → 0.4.0 for the bundled-content v…
manykarim May 13, 2026
887d5fa
Merge pull request #6 from manykarim/docs/version-policy
manykarim May 13, 2026
f477676
docs(readme): cross-agent install section + version policy reference
manykarim May 13, 2026
97cceb9
Merge pull request #7 from manykarim/docs/readme-installer-install
manykarim May 13, 2026
7c1c8e4
fix(installer): unblock Windows / PowerShell install (forward-slash p…
manykarim May 13, 2026
472d90e
fix(installer): convert hooks to Node.js to fix Windows startup error…
manykarim May 13, 2026
93c9a19
feat: RF validation hooks + PlatynUI desktop-automation skill (#10)
manykarim Jun 18, 2026
d757584
release(installer): rf-agentskills 0.5.0
manykarim Jun 18, 2026
7c236ee
fix(packaging): anchor results/ gitignore so results skill ships
manykarim Jun 18, 2026
5a7901b
feat(installer): onboarding wizard + project-scope default + safe hoo…
manykarim Jun 18, 2026
3846235
chore(openspec): archive improve-installer and sync specs
manykarim Jun 18, 2026
57f8e70
feat: add robotcode CLI and setup skills (#12)
manykarim Sep 27, 2026
89e7edd
Skill quality overhaul: new language/python-library skills, eval harn…
manykarim Sep 30, 2026
9ef71c0
Sibling cues in skill descriptions; re-fit all 12 to the shrunken ski…
manykarim Oct 6, 2026
feac02e
feat!: drop the rf-tools MCP server; ship Claude Desktop skill ZIPs (…
manykarim Oct 6, 2026
adf9735
chore(release): rf-agentskills 0.7.0 (#16)
manykarim Oct 6, 2026
684f16a
feat!: one plugin marketplace for every agent; retire the VS Code ext…
manykarim Nov 3, 2026
0efb945
feat(hooks): re-check unfixed validation errors at Stop (VS Code Loca…
manykarim Nov 3, 2026
9af8988
chore(openspec): archive marketplace-distribution and stop-hook-reval…
manykarim Nov 3, 2026
6ca71e4
feat!: delegate robotcode CLI skills to the robotcode plugin
manykarim Nov 7, 2026
f496524
chore(eval): move the harness to the 5.5 models and re-baseline
manykarim Nov 7, 2026
de29144
chore(openspec): archive delegate-robotcode-skills (#21)
manykarim Nov 7, 2026
e032ed9
release: content v3.0.0 and rf-agentskills 0.8.0 (#22)
manykarim Nov 7, 2026
b1d5f82
fix(ci): release workflow ran tests without dependencies (#23)
manykarim Nov 7, 2026
0026a02
plan(openspec): launch-plugin-programme and split-rf-agentskills
manykarim Nov 8, 2026
60ec771
Merge robotframework-agentskills history into robotframework-plugins
manykarim Nov 8, 2026
aef8815
Merge the programme plan onto the imported tree
manykarim Nov 8, 2026
c06141b
chore(openspec): record tasks 1.1, 1.2 and 1.4
manykarim Nov 8, 2026
1e1b917
feat!: rename the marketplace to robotframework-plugins
manykarim Nov 8, 2026
1a5ebed
feat!: rename the installer to robotframework-plugins 2026.12.0
manykarim Nov 8, 2026
1ad2e6e
feat!: point plugin mode at the robotframework-plugins marketplace
manykarim Nov 8, 2026
5c51f14
feat: migrate old robotframework-agentskills settings entries
manykarim Nov 8, 2026
a06f458
docs: point every reference at MarketSquare/robotframework-plugins
manykarim Nov 8, 2026
9cf31c4
feat(catalog): programme manifest schema and rf-agentskills catalog.yaml
manykarim Nov 8, 2026
b56d732
feat(catalog): generate the catalogue table, docs/catalog.md and mark…
manykarim Nov 8, 2026
c562477
feat(installer): bundle every active and deprecated plugin
manykarim Nov 8, 2026
7b72728
feat(installer): install a chosen set of plugins and list the catalogue
manykarim Nov 8, 2026
9835bf3
feat!: one version per plugin, set only in plugin.json
manykarim Nov 8, 2026
22264ab
refactor!: retire the root skills/ copy; each plugin owns its skills
manykarim Nov 8, 2026
f5cf1a3
refactor!: each plugin owns its tests and evals; CI runs the changed …
manykarim Nov 8, 2026
8a43e87
feat(catalog): cross-plugin checks, lifecycle fields and the version …
manykarim Nov 8, 2026
b909f35
refactor!: split rf-agentskills into rf-core, rf-web, rf-api, rf-mobi…
manykarim Nov 9, 2026
146a7d8
feat(rf-core): route library work to the technology plugins
manykarim Nov 9, 2026
30ca8cf
feat!: library content leaves rf-core; file-mode upgrades move to rf-…
manykarim Nov 9, 2026
1b3ffbd
feat(eval): trigger evals for partial installs
manykarim Nov 9, 2026
4ef7f98
feat(eval): partial-install tier, one task per technology plugin
manykarim Nov 9, 2026
3e87879
docs: install the plugins you need; launch plan follows the split
manykarim Nov 9, 2026
a63ec9a
fix(eval): name the staged plugins on the trigger run's first line
manykarim Nov 9, 2026
cffb8a6
fix(eval): accept target in the partial-install grader's nested check
manykarim Nov 9, 2026
7f10579
chore(openspec): split-rf-agentskills tasks 6.2 and 6.3 verified
manykarim Nov 9, 2026
6ac7ed7
docs(openspec): Copilot CLI live results for split-rf-agentskills
manykarim Nov 9, 2026
0cd0723
docs(openspec): Codex live results; split-rf-agentskills tasks 1.1, 2…
manykarim Nov 9, 2026
39f714a
chore(openspec): archive split-rf-agentskills
manykarim Nov 9, 2026
ac365b4
feat(security): house content rules; explicit tools for the writing s…
manykarim Nov 9, 2026
db2aa35
chore(openspec): launch task 4.1 done; C4 is the scanner gate's canary
manykarim Nov 9, 2026
d699b18
feat(security): install the gate's scanners at pinned versions
manykarim Nov 9, 2026
ea9ed6d
feat(security): compare scanner SARIF with a reviewed baseline
manykarim Nov 9, 2026
324368a
feat(security): per-plugin scan script and draft baselines
manykarim Nov 9, 2026
f6c74d3
feat(security): PR security gate workflow; bundles judged by member b…
manykarim Nov 9, 2026
3435608
feat(security): Cisco also scans each plugin's whole tree in lenient …
manykarim Nov 9, 2026
edb7a5a
feat(security): label-triggered model-assisted deep scan
manykarim Nov 9, 2026
186f650
feat(security): fork PRs never run live evals; Gitleaks key test
manykarim Nov 9, 2026
00e37c6
feat(governance): required reviews, ownership and tier evidence checks
manykarim Nov 9, 2026
035aef9
feat(catalog): lifecycle checks
manykarim Nov 9, 2026
a0af7e5
feat(installer): upgrades report plugins they removed
manykarim Nov 9, 2026
3d05e06
test(installer): file-mode installs make no network call
manykarim Nov 9, 2026
ddfb2e4
feat(adoption): traffic collection, feedback form and quarterly report
manykarim Nov 9, 2026
48cd548
feat(docs): docs voice check in CI
manykarim Nov 9, 2026
2347497
docs: README for the programme; CONTRIBUTING, GOVERNANCE and SECURITY
manykarim Nov 9, 2026
05ed321
feat: starter plugin template and a CI job that runs every check on it
manykarim Nov 9, 2026
dd03b29
docs: RELEASING for plugin and CalVer installer releases; installer R…
manykarim Nov 9, 2026
5eb4c7e
feat(release): per-plugin and CalVer installer releases with trusted …
manykarim Nov 9, 2026
a3760a2
feat: rf-agentskills 0.9.0, the forwarding release
manykarim Nov 9, 2026
bd2fa36
release: first installer release is 2026.11.0
manykarim Nov 9, 2026
cf5ec2a
fix(ci): Python 3.10, Windows paths, and one required security check
manykarim Nov 9, 2026
d7818d4
fix: .gitleaksignore no longer names the old repository
manykarim Nov 9, 2026
e34264c
security: sign off the plugin baselines
manykarim Nov 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
160 changes: 160 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
{
"name": "robotframework-plugins",
"owner": {
"name": "Robot Framework Foundation"
},
"metadata": {
"description": "Robot Framework agent plugins from the Robot Framework Foundation: skills, subagents and hooks for coding agents."
},
"plugins": [
{
"name": "rf-agentskills",
"source": "./bundles/rf-agentskills",
"description": "All Robot Framework plugins in one install (rf-core, rf-web, rf-api, rf-mobile, rf-desktop), as one plugin.",
"author": {
"name": "manykarim",
"email": "manykarim@users.noreply.github.com"
},
"homepage": "https://github.com/MarketSquare/robotframework-plugins",
"repository": "https://github.com/MarketSquare/robotframework-plugins",
"license": "Apache-2.0",
"keywords": [
"robotframework",
"testing",
"automation",
"web-testing",
"api-testing",
"mobile-testing",
"playwright",
"selenium",
"appium",
"requests",
"restinstance"
],
"category": "testing",
"tags": [
"robot-framework",
"verified"
]
},
{
"name": "rf-api",
"source": "./plugins/rf-api",
"description": "RequestsLibrary and RESTinstance skills for API tests.",
"author": {
"name": "manykarim",
"email": "manykarim@users.noreply.github.com"
},
"homepage": "https://github.com/MarketSquare/robotframework-plugins",
"repository": "https://github.com/MarketSquare/robotframework-plugins",
"license": "Apache-2.0",
"keywords": [
"robotframework",
"testing",
"api-testing",
"requests",
"restinstance"
],
"category": "testing",
"tags": [
"robot-framework",
"verified"
]
},
{
"name": "rf-core",
"source": "./plugins/rf-core",
"description": "Robot Framework syntax, environment setup, Python keyword libraries, test design and debugging subagents, and the validation hooks.",
"author": {
"name": "manykarim",
"email": "manykarim@users.noreply.github.com"
},
"homepage": "https://github.com/MarketSquare/robotframework-plugins",
"repository": "https://github.com/MarketSquare/robotframework-plugins",
"license": "Apache-2.0",
"keywords": [
"robotframework",
"testing",
"automation",
"robocop",
"robotcode"
],
"category": "testing",
"tags": [
"robot-framework",
"verified"
]
},
{
"name": "rf-desktop",
"source": "./plugins/rf-desktop",
"description": "PlatynUI skill for desktop UI tests.",
"author": {
"name": "manykarim",
"email": "manykarim@users.noreply.github.com"
},
"homepage": "https://github.com/MarketSquare/robotframework-plugins",
"repository": "https://github.com/MarketSquare/robotframework-plugins",
"license": "Apache-2.0",
"keywords": [
"robotframework",
"testing",
"desktop-testing",
"platynui"
],
"category": "testing",
"tags": [
"robot-framework",
"verified"
]
},
{
"name": "rf-mobile",
"source": "./plugins/rf-mobile",
"description": "AppiumLibrary skill for Android and iOS tests.",
"author": {
"name": "manykarim",
"email": "manykarim@users.noreply.github.com"
},
"homepage": "https://github.com/MarketSquare/robotframework-plugins",
"repository": "https://github.com/MarketSquare/robotframework-plugins",
"license": "Apache-2.0",
"keywords": [
"robotframework",
"testing",
"mobile-testing",
"appium"
],
"category": "testing",
"tags": [
"robot-framework",
"verified"
]
},
{
"name": "rf-web",
"source": "./plugins/rf-web",
"description": "Browser Library and SeleniumLibrary skills for web tests.",
"author": {
"name": "manykarim",
"email": "manykarim@users.noreply.github.com"
},
"homepage": "https://github.com/MarketSquare/robotframework-plugins",
"repository": "https://github.com/MarketSquare/robotframework-plugins",
"license": "Apache-2.0",
"keywords": [
"robotframework",
"testing",
"web-testing",
"playwright",
"selenium"
],
"category": "testing",
"tags": [
"robot-framework",
"verified"
]
}
],
"forceRemoveDeletedPlugins": true
}
21 changes: 21 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Claude Code OAuth token (preferred — subscription-based billing).
# Obtain via: `claude auth login` then inspect the saved token, or generate
# via the Claude Code web console. Tokens look like `sk-ant-oat01-...`.
CLAUDE_CODE_OAUTH_TOKEN=sk-ant-oat01-...

# Fallback: Anthropic API key (per-token billing). Used if CLAUDE_CODE_OAUTH_TOKEN
# is unset. Only uncomment and set if you specifically want API-key auth.
# ANTHROPIC_API_KEY=sk-ant-...

# Default model for evaluation runs. Must be one of:
# - claude-haiku-4-5-20251001 (cheap, fast; default for PR/narrow tasks, trigger evals)
# - claude-sonnet-5 (higher fidelity; for realistic/adversarial tiers)
# claude-opus-5-5 is a manual, explicit opt-in only
# (--model claude-opus-5-5 --allow-opus --max-cost-usd <cap>) — see ADR-004.
CLAUDE_MODEL_DEFAULT=claude-haiku-4-5-20251001

# Log level for the harness (DEBUG, INFO, WARNING, ERROR).
RF_SKILL_EVAL_LOG_LEVEL=INFO

# Opt-out of automatic .env loading on import (set to "0" to disable).
RF_SKILL_EVAL_AUTOLOAD_DOTENV=1
51 changes: 51 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Ownership by path (launch-plugin-programme D16): a plugin is the unit of
# installation; a skill folder is the unit of ownership. Later lines win, so
# each skill folder follows its plugin's line.
#
# People on a /plugins/<name>/ line must match that plugin's catalog.yaml
# maintainers (scripts/check-governance.py). The Foundation reviewers own every
# verified plugin; the security reviewers own security-relevant paths. GitHub
# asks each listed owner for review; the required-reviews workflow enforces an
# approval from every group (design D9).

/plugins/rf-agentskills/ @manykarim @MarketSquare/robotframework-plugins-reviewers
/plugins/rf-agentskills/.claude-plugin/ @manykarim @MarketSquare/robotframework-plugins-reviewers @MarketSquare/robotframework-plugins-security
/plugins/rf-api/ @manykarim @MarketSquare/robotframework-plugins-reviewers
/plugins/rf-api/skills/rf-requests/ @manykarim @MarketSquare/robotframework-plugins-reviewers
/plugins/rf-api/skills/rf-restinstance/ @manykarim @MarketSquare/robotframework-plugins-reviewers
/plugins/rf-api/.claude-plugin/ @manykarim @MarketSquare/robotframework-plugins-reviewers @MarketSquare/robotframework-plugins-security
/plugins/rf-core/ @manykarim @MarketSquare/robotframework-plugins-reviewers
/plugins/rf-core/skills/rf-language/ @manykarim @MarketSquare/robotframework-plugins-reviewers
/plugins/rf-core/skills/rf-python-library/ @manykarim @MarketSquare/robotframework-plugins-reviewers
/plugins/rf-core/skills/rf-setup/ @manykarim @MarketSquare/robotframework-plugins-reviewers
/plugins/rf-core/hooks/ @manykarim @MarketSquare/robotframework-plugins-reviewers @MarketSquare/robotframework-plugins-security
/plugins/rf-core/scripts/ @manykarim @MarketSquare/robotframework-plugins-reviewers @MarketSquare/robotframework-plugins-security
/plugins/rf-core/agents/ @manykarim @MarketSquare/robotframework-plugins-reviewers @MarketSquare/robotframework-plugins-security
/plugins/rf-core/variants/ @manykarim @MarketSquare/robotframework-plugins-reviewers @MarketSquare/robotframework-plugins-security
/plugins/rf-core/.claude-plugin/ @manykarim @MarketSquare/robotframework-plugins-reviewers @MarketSquare/robotframework-plugins-security
/plugins/rf-core/skills/rf-language/scripts/ @manykarim @MarketSquare/robotframework-plugins-reviewers @MarketSquare/robotframework-plugins-security
/plugins/rf-core/skills/rf-python-library/scripts/ @manykarim @MarketSquare/robotframework-plugins-reviewers @MarketSquare/robotframework-plugins-security
/plugins/rf-desktop/ @manykarim @MarketSquare/robotframework-plugins-reviewers
/plugins/rf-desktop/skills/rf-platynui/ @manykarim @MarketSquare/robotframework-plugins-reviewers
/plugins/rf-desktop/.claude-plugin/ @manykarim @MarketSquare/robotframework-plugins-reviewers @MarketSquare/robotframework-plugins-security
/plugins/rf-mobile/ @manykarim @MarketSquare/robotframework-plugins-reviewers
/plugins/rf-mobile/skills/rf-appium/ @manykarim @MarketSquare/robotframework-plugins-reviewers
/plugins/rf-mobile/.claude-plugin/ @manykarim @MarketSquare/robotframework-plugins-reviewers @MarketSquare/robotframework-plugins-security
/plugins/rf-web/ @manykarim @MarketSquare/robotframework-plugins-reviewers
/plugins/rf-web/skills/rf-browser/ @manykarim @MarketSquare/robotframework-plugins-reviewers
/plugins/rf-web/skills/rf-selenium/ @manykarim @MarketSquare/robotframework-plugins-reviewers
/plugins/rf-web/.claude-plugin/ @manykarim @MarketSquare/robotframework-plugins-reviewers @MarketSquare/robotframework-plugins-security

# Generated copies and shared security-relevant files.
/bundles/ @manykarim @MarketSquare/robotframework-plugins-reviewers @MarketSquare/robotframework-plugins-security
/.claude-plugin/ @manykarim @MarketSquare/robotframework-plugins-security
/security/ @MarketSquare/robotframework-plugins-security
/scripts/check_content_rules.py @manykarim @MarketSquare/robotframework-plugins-security
/scripts/compare-findings.py @manykarim @MarketSquare/robotframework-plugins-security
/scripts/install-scanners.sh @manykarim @MarketSquare/robotframework-plugins-security
/scripts/security-scan.sh @manykarim @MarketSquare/robotframework-plugins-security
/scripts/required-reviews.py @manykarim @MarketSquare/robotframework-plugins-security
/scripts/check-governance.py @manykarim @MarketSquare/robotframework-plugins-security
/.github/workflows/ @manykarim @MarketSquare/robotframework-plugins-security
/.github/CODEOWNERS @manykarim @MarketSquare/robotframework-plugins-security
/.github/governance.yaml @manykarim @MarketSquare/robotframework-plugins-security
56 changes: 56 additions & 0 deletions .github/ISSUE_TEMPLATE/plugin-feedback.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Plugin feedback
description: Tell us whether a plugin helped, and with what.
title: "[feedback] "
labels: [feedback]
body:
- type: markdown
attributes:
value: |
Thanks for taking a minute. Feedback is how we learn which plugins work; the
installer and plugins send nothing on their own. A label for the plugin you
pick is added automatically.
- type: dropdown
id: plugin
attributes:
label: Plugin
description: Which plugin is this about?
options:
# plugins:start (generated by scripts/build-catalog.py; do not edit)
- rf-agentskills
- rf-api
- rf-core
- rf-desktop
- rf-mobile
- rf-web
# plugins:end
validations:
required: true
- type: input
id: agent
attributes:
label: Agent and model
description: For example "Claude Code 2.1, Sonnet 5.5" or "Copilot CLI, GPT-6".
validations:
required: true
- type: input
id: versions
attributes:
label: Robot Framework and library versions
description: For example "Robot Framework 7.4.2, Browser 20.1.0".
validations:
required: true
- type: dropdown
id: helped
attributes:
label: Did the plugin help?
options:
- "Yes"
- Partly
- "No"
validations:
required: true
- type: textarea
id: details
attributes:
label: What happened
description: What you asked the agent, and what was good or wrong about the result.
43 changes: 43 additions & 0 deletions .github/actions/setup-eval/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Setup skill-eval environment
description: >-
Installs uv, Node 20, the Claude Code CLI, Python dependencies via uv sync,
and initializes Playwright browsers for robotframework-browser. Shared by
the Skill Evaluation workflow tiers.

inputs:
node-version:
description: "Node.js version for the Claude Code CLI"
required: false
default: "20"
uv-cache-glob:
description: "Glob(s) uv should key its dependency cache on"
required: false
default: |
pyproject.toml
uv.lock

runs:
using: composite
steps:
- name: Set up uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
cache-dependency-glob: ${{ inputs.uv-cache-glob }}

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node-version }}

- name: Install Claude Code CLI
shell: bash
run: npm install -g @anthropic-ai/claude-code

- name: Install Python dependencies
shell: bash
run: uv sync --all-extras

- name: Initialize Playwright browsers
shell: bash
run: uv run rfbrowser init
52 changes: 52 additions & 0 deletions .github/governance.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Review groups and tier exceptions (spec plugin-trust-tiers; design D9).
# Read by scripts/check-governance.py and scripts/required-reviews.py.
# Changing this file needs the security reviewers' approval.

teams:
# Approves verified plugins and tier promotions.
foundation: MarketSquare/robotframework-plugins-reviewers
# Approves security-relevant changes (spec content-security-scanning).
security: MarketSquare/robotframework-plugins-security

# Security-relevant paths: a change to any of them needs the security team.
# Patterns use fnmatch; "*" matches across folders. A SKILL.md counts only
# when its allowed-tools line changes (scripts/required-reviews.py).
security_paths:
- "plugins/*/hooks/*"
- "bundles/*/hooks/*"
- "plugins/*/scripts/*"
- "bundles/*/scripts/*"
- "plugins/*/skills/*/scripts/*"
- "bundles/*/skills/*/scripts/*"
- "plugins/*/variants/opencode/plugins/*"
- "plugins/*/agents/*"
- "bundles/*/agents/*"
- "plugins/*/variants/*/agents/*"
- "*.mcp.json"
- "*/mcp.json"
- "plugins/*/.claude-plugin/*"
- "bundles/*/.claude-plugin/*"
- ".claude-plugin/*"
- "security/*"
- "scripts/check_content_rules.py"
- "scripts/compare-findings.py"
- "scripts/install-scanners.sh"
- "scripts/security-scan.sh"
- "scripts/required-reviews.py"
- "scripts/check-governance.py"
- ".github/workflows/*"
- ".github/CODEOWNERS"
- ".github/governance.yaml"
- ".gitleaksignore"

# Verified plugins that don't meet every verified criterion yet. Each entry
# names what is missing and lasts until a date; after it, check-governance.py
# fails. New promotions to verified get no entry.
tier_grace:
- plugins: [rf-agentskills, rf-core, rf-web, rf-api, rf-mobile, rf-desktop]
missing: [second-maintainer, foundation-maintainer]
until: 2027-01-31
reason: >-
The programme launches with one maintainer. A second maintainer from the
Foundation reviewers team joins before the first CalVer release
(launch task 10.2); otherwise these plugins move to the community tier.
Loading
Loading