Commit Graph
53 Commits
Author SHA1 Message Date
fraujulian 9107e261f4 ci(gitea): move validation workflow
CI / linux (push) Successful in 18s
CI / windows (push) Canceled after 0s
2026-09-14 01:08:15 +02:00
fraujulian d699cdcff4 refactor(agents): remove inert metadata 2026-09-14 01:08:01 +02:00
fraujulian a3cee2756c feat(config): validate clients and scope security 2026-09-14 01:07:46 +02:00
fraujulian 5b0c623a8d feat(plugins): add shared client tools 2026-09-14 01:07:28 +02:00
Julian lechnerandClaude Sonnet 5 e88d27ac43 docs(configuration): document the multi_agent_v2 decision
CI / linux (push) Successful in 12s
CI / windows (push) Canceled after 0s
Recorded why it is not configured: it does not appear in the current
documented Codex schema, only in upstream issue titles describing an
internal/experimental flag. [agents].enabled already covers enabling
multi-agent tools; the schema's separate [features].multi_agent toggle
would be redundant alongside it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:07:51 +02:00
Julian lechnerandClaude Sonnet 5 03d44e1d71 docs(configuration): correct the max_depth claim
The previous wording implied a global max_depth-style setting had been
considered generically; the only such key in Codex's schema is
network_proxy.glob_scan_max_depth, which bounds glob expansion for the
network proxy feature and has nothing to do with agents. Claude Code
exposes no comparable key either.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:07:37 +02:00
Julian lechnerandClaude Sonnet 5 4e7056e821 ci: bump actions/checkout to v6
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:07:32 +02:00
Julian lechnerandClaude Sonnet 5 0ae373c202 fix(installer): tolerate BOM, CRLF, and uppercase in older manifests (Bash)
Bash's manifest reader stripped only the trailing newline, so a
CRLF-terminated manifest left a stray \r on every hash, a UTF-8 BOM on the
header line was folded into the "path" field, and an uppercase hash never
matched sha256sum's lowercase output. Reproduced against a real
manifest written by an earlier version of the PowerShell installer, where
every single managed file was misreported as locally modified.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:07:27 +02:00
Julian lechnerandClaude Sonnet 5 1c2d155fcc fix(installer): write manifest hashes lowercase and without a BOM (PowerShell)
Windows PowerShell 5.1's -Encoding UTF8 always prepends a BOM, and
Get-FileHash returns uppercase hex. Bash's manifest reader expects neither,
so a manifest written by this module and later read by the Bash
equivalent (or vice versa) mismatched on every single entry: the BOM
folded into the header's first field, and every hash comparison failed on
case alone. Hashes are now lowercased on read and write, and the manifest
file itself is written UTF-8 without a BOM.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:07:17 +02:00
Julian lechnerandClaude Sonnet 5 e143f9d087 fix(tests): add explicit exit 0 on success (PowerShell build validation)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:07:06 +02:00
Julian lechnerandClaude Sonnet 5 a4ea912b60 fix(tests): add explicit exit 0 on success (PowerShell managed install)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:07:02 +02:00
Julian lechnerandClaude Sonnet 5 c866fe44f0 fix(tests): add explicit exit 0 on success (PowerShell platform packages)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:06:57 +02:00
Julian lechnerandClaude Sonnet 5 c89aa4885c fix(installer): add explicit exit 0 on success (PowerShell)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:06:52 +02:00
Julian lechnerandClaude Sonnet 5 c9ef92e424 fix(doctor): add explicit exit 0 on success (PowerShell)
doctor.ps1 already exited 1 on failure but relied on the implicit process
exit code on success, which a stale $LASTEXITCODE from an earlier native
call (e.g. codex --version) could turn into a false failure in CI.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:06:48 +02:00
Julian lechnerandClaude Sonnet 5 6314b408b3 fix(build): add explicit exit 0 on success (PowerShell)
Without it, a stale $LASTEXITCODE left over from an earlier native
command in the same PowerShell session could cause a CI step to be
reported as failed even though the script itself completed successfully.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:06:42 +02:00
Julian lechnerandClaude Sonnet 5 1163f6d96e fix: mark shell scripts executable in git
All tracked .sh files were stored as mode 100644 (non-executable), even
though the CI workflow and normal usage invoke several of them directly
(./scripts/build.sh) rather than through `bash`. On a fresh Linux
checkout this fails with a permission error.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:06:37 +02:00
Julian lechnerandClaude Sonnet 5 6ebb13d51a docs(readme): document rule skills, managed manifest, and installer params
CI / linux (push) Failing after 3s
CI / windows (push) Canceled after 0s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:44:32 +02:00
Julian lechnerandClaude Sonnet 5 0d60aa6f5c docs(plugins): document the opt-in plugin update behavior
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:44:28 +02:00
Julian lechnerandClaude Sonnet 5 2fd59f3fd8 docs(skills): document the generated Claude skills/rules category
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:44:24 +02:00
Julian lechnerandClaude Sonnet 5 b815d16084 docs(configuration): document Claude rule skills and the Codex key rename
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:44:20 +02:00
Julian lechnerandClaude Sonnet 5 cd6647eb7b ci: add build and test workflow for Linux and Windows
Runs build, doctor, the platform-package tests, the managed-manifest
tests, the build-validation tests, and an install dry run on both
ubuntu-latest and windows-latest for every push to main and every pull
request.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:44:15 +02:00
Julian lechnerandClaude Sonnet 5 1abb3a2d32 docs(hooks): clarify which hook scripts are actually registered
Only the Stop hook (flashbang) is wired into the generated client
configuration. Validate-CommandSafety and Invoke-PostChangeVerification
are utility scripts nothing here invokes automatically; the previous
wording could be read as implying otherwise.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:44:09 +02:00
Julian lechnerandClaude Sonnet 5 077eaa55be fix(hooks): handle missing tkinter cleanly in flashbang.sh
tkinter was imported at module level, before the try/except that was
meant to catch a missing display or toolkit. On a Python install without
the (often separately packaged) tkinter module, the script crashed
instead of falling back to notify-send. The import is now wrapped in its
own try/except with the same fallback.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:44:04 +02:00
Julian lechnerandClaude Sonnet 5 b59d355e99 perf(hooks): reduce Stop hook timeout from 20s to 8s
The Stop hook only runs a ~500ms visual flash; 20 seconds was far more
than any realistic process-start latency needs, including the one-time
native shim compile on Windows.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:57 +02:00
Julian lechnerandClaude Sonnet 5 ae421ce93b fix(codex): rename max_threads to max_concurrent_threads_per_session
max_threads is a legacy alias; the current Codex config sample only
documents max_concurrent_threads_per_session under [agents]. Confirmed
against the official sample configuration before renaming.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:47 +02:00
Julian lechnerandClaude Sonnet 5 eff814b245 test: add build-time validation regression tests (Bash)
Bash equivalent of the PowerShell build-validation test, using a tar-based
repo copy per case to check the same four rejected-defect scenarios.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:36 +02:00
Julian lechnerandClaude Sonnet 5 3d6c19814e test: add build-time validation regression tests (PowerShell)
Runs the build against temporary full-repo copies, each with one injected
defect, and asserts the build rejects it: invalid Claude settings.json,
a duplicate agent name, a duplicate plugin name, and a leftover template
placeholder.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:31 +02:00
Julian lechnerandClaude Sonnet 5 f56366969d test: add managed-manifest installer scenarios (Bash)
Bash equivalent of the PowerShell managed-manifest test, covering the same
idempotency, stale-removal, modified-file-protection, foreign-file, and
side-effect-free dry-run scenarios against sync_managed_destination.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:26 +02:00
Julian lechnerandClaude Sonnet 5 0e9de14d46 test: add managed-manifest installer scenarios (PowerShell)
Exercises Sync-ManagedDestination directly against a throwaway
source/destination pair: idempotent second install (no writes, no
backups), removal of a stale-and-untouched file, protection of a
stale-but-locally-modified file (backed up, left in place, warned), a
foreign file that was never installed staying untouched, and a dry run
that reports the planned removal without any side effects.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:21 +02:00
Julian lechnerandClaude Sonnet 5 0fc87fc6b3 feat(doctor): validate managed files, counts, and config syntax (Bash)
Bash equivalent of the PowerShell doctor change: dynamic agent/skill count
checks, JSON validation of installed settings.json (jq, falling back to a
functional python3 probe), a config.toml balance check, a fast tree-wide
placeholder scan, and managed-manifest missing/modified-file reporting.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:15 +02:00
Julian lechnerandClaude Sonnet 5 ec354ca5f6 feat(doctor): validate managed files, counts, and config syntax (PowerShell)
Doctor now compares generated agent/skill counts against the source
directories and the rule-skills manifest, parses installed settings.json
as JSON, sanity-checks installed config.toml for balanced quotes and
brackets, scans generated output for leftover template placeholders, and
reports missing or locally modified files from each destination's managed
manifest. All checks stay local and file-based; no network calls.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:10 +02:00
Julian lechnerandClaude Sonnet 5 e617a2477a feat(installer): install via managed manifest with non-interactive params (Bash)
Bash equivalent of the PowerShell installer change: delegates to
sync_managed_destination, adds --client/--platform for non-interactive
runs (falling back to the existing interactive prompts when omitted), and
requires --update-plugins to update already-installed plugins instead of
doing so by default.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:04 +02:00
Julian lechnerandClaude Sonnet 5 f72af0ee39 feat(installer): install via managed manifest with non-interactive params (PowerShell)
install.ps1 now delegates every destination to Sync-ManagedDestination
instead of a blind copy-and-backup loop, so repeated installs are cheap
and safe by default.

Adds -Client and -Platform parameters so CI or scripts can run fully
non-interactively (install.ps1 -Client Both -Platform Windows); both fall
back to the existing interactive prompts when omitted. Plugin updates now
require an explicit -UpdatePlugins switch instead of always updating
already-installed plugins, so a configuration update never silently
changes third-party plugin code.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:42:59 +02:00
Julian lechnerandClaude Sonnet 5 80cff169f4 feat(installer): add managed-file manifest module (Bash)
Bash equivalent of the PowerShell manifest module: sync_managed_destination
plus its read/write/hash helpers, using sha256sum and a TSV manifest so
the same idempotent-install, stale-detection, and local-modification
protection behavior is available without a PowerShell dependency.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:42:53 +02:00
Julian lechnerandClaude Sonnet 5 3f27cd0778 feat(installer): add managed-file manifest module (PowerShell)
Adds Sync-ManagedDestination and its manifest helpers: a per-destination
TSV of path -> SHA-256 that makes installation idempotent (unchanged files
are neither rewritten nor backed up), detects files this setup previously
installed that the source no longer ships (removed after backup, unless
changed locally, in which case they are backed up and left in place with
a warning), and never touches a file it never installed. Backups for a
run land together under backups/<stamp>/ instead of one suffix per file.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:42:48 +02:00
Julian lechnerandClaude Sonnet 5 83b260533a test: derive expected agent and skill counts from source (Bash)
Bash equivalent of the PowerShell test change. Also relaxes the platform
dry-run assertion to match on "-$platform" instead of "-$platform/", since
the installer now reports one destination summary line per sync instead of
one line per copied file.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:42:41 +02:00
Julian lechnerandClaude Sonnet 5 b1d5a7be42 test: derive expected agent and skill counts from source (PowerShell)
Replaces the hardcoded 5-agent/22-skill expectations with counts computed
from shared/agents, shared/skills, and the new rule-skills manifest, so
adding an agent, skill, or Claude rule skill no longer requires touching
an unrelated magic number in this test.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:42:36 +02:00
Julian lechnerandClaude Sonnet 5 1807137daa feat(build): generate Claude rule skills and validate build output (Bash)
Bash equivalent of the PowerShell build change: Claude gets general.md
inlined into CLAUDE.md plus one generated skill per rule-skills.tsv entry;
Codex keeps every rule as a plain file with unchanged AGENTS.md text.

Adds the same build-time validation as the PowerShell script: duplicate
agent/plugin/rule-skill names, JSON validity (jq, falling back to a
functional python3 probe), balanced TOML quotes/brackets, and a
tree-wide (not per-file) leftover-placeholder scan for speed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:42:30 +02:00
Julian lechnerandClaude Sonnet 5 11b319c2ea feat(build): generate Claude rule skills and validate build output (PowerShell)
Claude's package now gets general.md inlined into CLAUDE.md plus one
generated skill per rule-skills.tsv entry under skills/rules/, instead of
copying every rule file into the always-loaded rules/ directory. Codex is
unaffected: it still receives every rule as a plain file and the original
rule-loading text, byte-for-byte.

Also adds build-time validation: duplicate agent/plugin/rule-skill names
fail the build, generated settings.json must parse as JSON, generated
config.toml must have balanced quotes/brackets, and no __PLACEHOLDER__
tokens may remain unresolved (__AI_CONFIG_ROOT__ excepted, since it is
only resolved at install time).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:42:23 +02:00
Julian lechnerandClaude Sonnet 5 24e4d3f96b feat(rules): define Claude rule-skill manifest and template placeholder
Adds adapters/claude/rule-skills.tsv, mapping each technology- or
situation-specific rule to a Claude skill name and trigger description.
Replaces the hardcoded rule-loading block in the shared instructions
template with a __RULE_LOADING__ placeholder so each client's build step
can substitute its own loading mechanism without duplicating the shared
orchestration text.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:42:16 +02:00
Julian lechnerandClaude Sonnet 5 3a3c66f290 chore: add .gitattributes for consistent line endings
Ensures shell scripts keep LF and PowerShell scripts keep CRLF across
Windows and Linux checkouts.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:42:10 +02:00
Julian lechner a95d6aef9f chore: add funding metadata 2026-09-11 14:47:50 +02:00
Julian lechner 4316fa3c67 ci: target MyAiConfiguration on Gitea 2026-09-11 14:46:48 +02:00
Julian lechner 8610dcf348 docs: document configuration architecture and usage 2026-09-11 14:43:45 +02:00
Julian lechner 13e2dbbea0 feat(orchestration): add shared global instructions 2026-09-11 14:43:36 +02:00
Julian lechner 396f62a503 feat(scripts): add cross-platform build and installation tools 2026-09-11 14:43:18 +02:00
Julian lechner b65af63e7e feat(adapters): add Codex and Claude client settings 2026-09-11 14:43:07 +02:00
Julian lechner 0189323e8f feat(hooks): add cross-platform safety and status hooks 2026-09-11 14:42:57 +02:00
Julian lechner 54820797fa feat(skills): add shared task workflows 2026-09-11 14:42:47 +02:00
Julian lechner 30a057c41b feat(agents): add shared orchestration roles 2026-09-11 14:42:39 +02:00