Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/WORKFLOWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ preparing a release does not imply submitting it to the marketplace.
| A design question | Design | Recommendation and tradeoffs, without implementation for a design-only request. |
| A specification and existing plugin | Relevant surface skill, with QML patterns as needed → test | Scoped implementation preserving settled decisions. |
| A tooltip or layout correction | Relevant surface skill → affected checks | Focused patch without restarting design or scaffolding. |
| One widget ignores the active theme | Debug → QML patterns for a requested repair | Diagnose the token consumer; preserve a correct global palette and diagnosis-only scope. |
| Global bar colours or theme-owned spacing | Theme Shell from Build Omarchy Themes, when available | Change shared theme tokens; use Plugin skills only for any requested QML consumer or behaviour change. |
| A discovery, load or runtime failure | [Debug](../skills/omarchy-plugin-debug/SKILL.md) → relevant checks after repair | Supported diagnosis, or a patch and evidence that the original failure is fixed. |
| A legacy integration | [Migrate](../skills/omarchy-plugin-migrate/SKILL.md) → affected implementation and tests | Preserved machine responsibilities with the requested shell surface migrated. |
| A working UI needing a screenshot | Demo | Reproducible fixtures, capture and restoration evidence, or a harness with capture explicitly pending. |
Expand Down
27 changes: 27 additions & 0 deletions evals/HANDOFFS.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,3 +141,30 @@ require fresh evidence at the new SHA. Repeat with a real `sudo` command alongsi
negative prose: preserve the disclosure and identify actual privilege behavior.

This is a documented behavioral case, not an executed agent evaluation.

## Theme and plugin colour ownership

Fixture: `Widget.qml` imports `QtQuick` and `qs.Commons` and contains a Text
with `color: "#9d7cd8"`. A neighbouring `colors.toml` has dark mode,
background `#171c1a`, foreground `#e4e8df`, and accent `#b3cb92`.
Make both skill bundles available; no live Omarchy host is available.

Prompt:

> Diagnose only: my Omarchy widget text stays violet after changing the active
> theme accent to sage. Inspect Widget.qml and colors.toml. Return the cause,
> proposed correction and evidence limits. Do not edit files or affect a desktop.

Evaluator criteria: identifies the literal QML colour, routes the consumer
defect to Plugin Debug/QML Patterns, proposes a semantic token binding, and
does not change the palette or fixture. Distinguishes source evidence from
verification of the deployed widget, installed API, active theme or reload.

One independent candidate run on 14 September 2026 identified the literal,
proposed `Color.accent`, preserved the fixture bytes and explicitly left live
host checks unverified. This is a single diagnosis exercise, not evidence of
automatic ChatGPT routing reliability or an executed repair handoff.

Additional case, not yet executed: request shared bar colours and spacing
without a widget behaviour change. Expect inspection of ownership and routing
to Theme Shell, without generating a new plugin or editing unrelated widgets.
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
---
name: omarchy-bar-widget
description: Build or refactor an Omarchy Quattro bar widget, including settings, vertical layouts, optional popout panels, multiple instances, and shared services. Use when `kinds` includes `bar-widget`; not for replacing the entire bar.
description: Build or refactor an Omarchy Quattro bar-widget implementation, including settings, orientation, popouts, instances and shared services. Use for widget QML or behaviour; global bar styling belongs to theme skills, and replacing the entire bar is outside this skill.
---

# Omarchy Bar Widget

Inspect the existing widget and requested effect before editing. For global bar colours, spacing or theme-owned surface tokens, use omarchy-theme-shell when available. For one widget that ignores the active theme, fix its QML token consumption with omarchy-qml-patterns. A mixed styling and behaviour request may need both workflows; avoid changing global theme values to mask a widget defect.

Use Omarchy's `BarWidget` and `WidgetButton` primitives so placement,
orientation, theme, tooltips, and popout behavior remain coherent with the
active bar.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ description: Diagnose an Omarchy Quattro plugin that is not discovered, validate

# Debug Omarchy Plugins

For colour failures, distinguish the plugin consumer from the shared theme source. Inspect QML token bindings and reload state when one plugin is wrong. If the shared palette or generated shell TOML is wrong across surfaces, use omarchy-theme-debug when available. Keep diagnosis-only requests read-only across both workflows.

For diagnosis-only requests, return the cause and proposed correction without
editing. For a requested fix, patch the affected code in place and preserve
unrelated content; report independent discoveries separately.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ baseline and is not proof that a plugin is safe. The privilege advisory delibera
flags all `sudo`/`pkexec` mentions, including negated README prose: upstream
recognizes narrower negation forms than natural language. Inspect the actual
line and execution path; do not treat a reference as proof of execution. For
submission, use the [review-response guidance](../omarchy-plugin-publish/references/review-response.md)
submission, use the [review-response guidance](references/review-response.md)
to reconcile local warnings with the exact-commit marketplace result.

## Test layers
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Preparing a useful response to marketplace review

Based on public HANCORE-linux reviews checked 12 September 2026. Review
requirements evolve; inspect the current issue and workflow before acting.

Keep a compact evidence table in the prepared response:

| Reviewer finding/link | Changed production path | Reproduction and result | Final full SHA |
| --- | --- | --- | --- |
| One row per outstanding finding | File/function and actual boundary | Command, exit status and meaningful observation | Same commit as validation |

Use this to show what changed, not to assert that a passing local scan compels
approval. Include unresolved items and unavailable live checks. Freeze the final
commit while requesting its baseline; a newer push invalidates evidence about
an older snapshot. Preserve the official form headings and acknowledgments.

Before opening anything, search by repository URL and plugin ID. Reuse an active
request. If the maintainer closed it and explicitly invited a fresh submission,
follow that direction and link the old review; do not silently treat all closed
issues as needing reopening. Distinguish superseded requests and failed catalog
publication from new plugin defects.

Review the **whole distributed checkout**. Recent reviews reject agent/session
control payloads such as `AGENTS.md`, `CLAUDE.md`, `HANDOFF.md` and equivalent
instructional artifacts in installable desktop plugins. Keep authoring-agent
configuration outside that distributed tree; ordinary user/developer docs are
not automatically equivalent. This concerns the desktop plugin being built,
not this agent-skills bundle, whose intended payload is instructions.
See [review #4744](https://github.com/omacom/omarchy-plugin-marketplace/issues/4744#issuecomment-5642689162).

For data, process or state findings, trace the actual producer-to-consumer path.
A downstream slice, path pre-check, timeout that leaves grandchildren alive, or
an absolute path to a mutable executable may leave the reported boundary open.
Verify the fix with an adversarial fixture relevant to that specific path.

## Compatibility success and documentation-triggered review

Checked 13 September 2026 against marketplace commit
`55efec9646cc24ca3ae8c427440043fa745ada49` and the two bot reports on
[Markets update #6586](https://github.com/omacom/omarchy-plugin-marketplace/issues/6586).
The [compatibility report](https://github.com/omacom/omarchy-plugin-marketplace/issues/6586#issuecomment-5648889073)
passed, while the [security report](https://github.com/omacom/omarchy-plugin-marketplace/issues/6586#issuecomment-5648899465)
required privilege review solely for README prose: “This plugin never requests
sudo, installs packages, starts a systemd service,”. There were no findings.

Read compatibility, security disposition, maintainer approval and publication
as separate states for the same full SHA. “Ready for verified update review”
does not mean approved or published; the existing snapshot stays unchanged
until publication succeeds. `review-required` does not itself demand a code fix.

Inspect the cited lines, surrounding documentation and relevant runtime paths.
The root README is scanned too. Upstream recognizes specific negation phrases,
not arbitrary English: `No sudo or pkexec is required.` is a documented example;
`never requests sudo` was not recognized in this report. Our advisory validator
intentionally flags either wording so that it cannot silently dismiss a command
near a negation. It is broader than the upstream privilege matcher.

If inspection confirms documentation-only evidence, prepare an explanation for
the existing review with the exact path and SHA. Alternatively, clarify truthful
prose (for example, `Runs with your normal user permissions.`), preserving the
actual dependencies, installation commands and privilege disclosures. Never
hide real commands, relocate runtime files to scan exclusions, or remove real
capability documentation to obtain a pass. A wording change creates a new
candidate: rerun affected checks and obtain fresh marketplace evidence for it.
Do not promise that a wording change will clear every capability.

For real privilege use, document why it is needed, its command/input boundary
and removal behavior, then leave capability acceptance to the maintainer.
Prepare any response within the user's scope; send it only with authorization.
The authoritative policy and limits are in the pinned
[security policy](https://github.com/omacom/omarchy-plugin-marketplace/blob/55efec9646cc24ca3ae8c427440043fa745ada49/SECURITY.md#automated-security-baseline).
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
---
name: omarchy-qml-patterns
description: Build or refactor QML hosted inside the Omarchy 4 Quattro shell. Use for injected properties, Omarchy components, theme tokens, responsive layout, process execution, state, or multi-monitor behavior; not for standalone Quickshell applications.
description: Build or refactor QML hosted inside the Omarchy 4 Quattro shell, including plugin theme-token bindings, responsive layout, process execution and state. Use for QML implementation; global palette or shell.toml styling belongs to theme skills, and standalone Quickshell apps are outside this skill.
---

# Omarchy QML Patterns

For colour or spacing requests, identify the owner before editing. Fix a plugin's literal values or incorrect token bindings in its QML. Change shared palette values or shell TOML through omarchy-theme-palette or omarchy-theme-shell when available. For mixed tasks, keep the QML consumer and theme source changes scoped to their respective files; do not create a plugin merely to recolour the desktop.

Work inside Omarchy's existing shell process and preserve local repository
conventions.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ to a full immutable commit and verify the checked-out revision. Prefer packaged
dependencies installed outside the shell plugin.

For concrete producer limits, executable identity, descendant cleanup and
state-file races, consult the [marketplace reviewer boundaries](../../omarchy-qml-patterns/references/reviewer-boundaries.md) when those paths exist.
state-file races, consult the [marketplace reviewer boundaries](reviewer-boundaries.md) when those paths exist.
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Boundaries repeatedly raised in marketplace review

Derived from HANCORE-linux's public reviews in
[omacom/omarchy-plugin-marketplace](https://github.com/omacom/omarchy-plugin-marketplace/issues),
reviewed 12 September 2026. These are recurring review concerns, not a substitute
for the current marketplace contract or an assertion that every concern applies
to every plugin. Apply the relevant boundary while implementing the feature.

## External data and the shared shell

Set `textFormat: Text.PlainText` on text carrying remote content, window titles,
repository metadata, helper errors or other external strings. Trace through
shared controls too; formatting one parent does not secure every child sink.
Keep intentional rich text fixed or generated from explicitly trusted content.
See [review #3360](https://github.com/omacom/omarchy-plugin-marketplace/issues/3360#issuecomment-5464817134).

Enforce byte limits **while receiving**, before full reads, JSON parsing,
`StdioCollector`, `FileView`, `responseText` or temporary-file accumulation.
Truncating afterwards leaves the memory/disk exhaustion path intact. Bound
stdout and stderr separately, then fields, records, nesting and retained history.
Use a whole-operation deadline in addition to socket timeouts; drip-fed input
can otherwise keep a request alive. Test overflow, an unterminated line, stalled
input and oversized error output on the actual production read path.
See [review #1667](https://github.com/omacom/omarchy-plugin-marketplace/issues/1667#issuecomment-5451236689).

## Execution and lifetime

Use direct argv with trusted executable identities and a minimal explicit
child environment for unattended or sensitive work. Bare names, user-writable
shims, and a successful `command -v` are not proof of that identity. Fix the
interpreter too; Python isolation may be needed where inherited search paths
could load code. Do not apply these Linux runtime choices to unrelated portable
builder scripts. See [review #6292](https://github.com/omacom/omarchy-plugin-marketplace/issues/6292#issuecomment-5645360550).

Validate option-shaped values and terminate option parsing where supported.
A list of arguments prevents shell interpretation but does not prevent a tool
from treating attacker-controlled data as an option. Avoid constructing shell,
Python or configuration source from external values.

Supervise the original child and descendants through bounded termination and
reaping. Do not assume setting QML `running=false` cleans up descendants. Avoid
broad `pkill -f`, and avoid delayed signal helpers that reopen a bare numeric
PID/PGID after the original child may have exited and its ID been reused.
Use an identity-preserving supervisor appropriate to the platform. Test a
stubborn child, child descendants, cancellation and late completion. Rate-limit
public IPC, serialize state changes and bound restart/backoff attempts.
See [review #6157](https://github.com/omacom/omarchy-plugin-marketplace/issues/6157#issuecomment-5647018532).

## Files, credentials and privileged helpers

For sensitive mutable state, open from a trusted directory with retained parent
descriptors and no-follow component traversal. Verify file type, ownership,
permissions and byte bounds on the opened object. A pathname check followed by
a fresh open races; final-component `O_NOFOLLOW` alone does not protect ancestors.
Create private temporary files exclusively and unpredictably, then replace
relative to the retained parent. When sharing state with another writer, check
its revision before replacement; an unrelated plugin lock is insufficient.
See [review #6426](https://github.com/omacom/omarchy-plugin-marketplace/issues/6426#issuecomment-5646894185).

Reject `.` and `..` explicitly in basename-only fields. Validate redirects and
URL schemes at the boundary actually used, not only on the initial input.

Keep authentication with the owning CLI/key store. Never pass tokens or recovery
phrases in argv, log them, or retain arbitrary process command lines as undo
state. If a CLI cannot accept secrets safely, design the plugin around an
already-configured account. Disclosure alone does not fix exposure.
See [review #2766](https://github.com/omacom/omarchy-plugin-marketplace/issues/2766#issuecomment-5446596212).

Do not elevate a script from a user-writable checkout. A privileged helper needs
a trusted installation and immutable executable identity; a path check before
`pkexec` is insufficient. Review downloaded executable provenance separately.
4 changes: 3 additions & 1 deletion skills/omarchy-bar-widget/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
---
name: omarchy-bar-widget
description: Build or refactor an Omarchy Quattro bar widget, including settings, vertical layouts, optional popout panels, multiple instances, and shared services. Use when `kinds` includes `bar-widget`; not for replacing the entire bar.
description: Build or refactor an Omarchy Quattro bar-widget implementation, including settings, orientation, popouts, instances and shared services. Use for widget QML or behaviour; global bar styling belongs to theme skills, and replacing the entire bar is outside this skill.
---

# Omarchy Bar Widget

Inspect the existing widget and requested effect before editing. For global bar colours, spacing or theme-owned surface tokens, use omarchy-theme-shell when available. For one widget that ignores the active theme, fix its QML token consumption with omarchy-qml-patterns. A mixed styling and behaviour request may need both workflows; avoid changing global theme values to mask a widget defect.

Use Omarchy's `BarWidget` and `WidgetButton` primitives so placement,
orientation, theme, tooltips, and popout behavior remain coherent with the
active bar.
Expand Down
2 changes: 2 additions & 0 deletions skills/omarchy-plugin-debug/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ description: Diagnose an Omarchy Quattro plugin that is not discovered, validate

# Debug Omarchy Plugins

For colour failures, distinguish the plugin consumer from the shared theme source. Inspect QML token bindings and reload state when one plugin is wrong. If the shared palette or generated shell TOML is wrong across surfaces, use omarchy-theme-debug when available. Keep diagnosis-only requests read-only across both workflows.

For diagnosis-only requests, return the cause and proposed correction without
editing. For a requested fix, patch the affected code in place and preserve
unrelated content; report independent discoveries separately.
Expand Down
2 changes: 1 addition & 1 deletion skills/omarchy-plugin-test/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ baseline and is not proof that a plugin is safe. The privilege advisory delibera
flags all `sudo`/`pkexec` mentions, including negated README prose: upstream
recognizes narrower negation forms than natural language. Inspect the actual
line and execution path; do not treat a reference as proof of execution. For
submission, use the [review-response guidance](../omarchy-plugin-publish/references/review-response.md)
submission, use the [review-response guidance](references/review-response.md)
to reconcile local warnings with the exact-commit marketplace result.

## Test layers
Expand Down
Loading
Loading