the signals and their derived score are provisional and subject to change.
validate manually before sharing.
cf87f14e5834281dce2256dc2c108f85eb834e972cc63bc99eddbf0e16f69ca2e10b927c99f8831bAuthored: 5 days ago (Wed, 9 Sep 2026 13:48:26 +0000)Match: Assisted-by: claudeafcba8d33bd19d8e965ef78b06f7bd691626a725Authored: 3 weeks ago (Thu, 20 Aug 2026 21:18:25 +0000)Match: Co-authored-by: Cursor46ad803595ea1d9d09f5f7c2b7e9a757e8a182faAuthored: 1 month ago (Thu, 13 Aug 2026 14:50:16 +0000)Match: Assisted-by: Cursor00c4bb8ac6181b1240de2264f5fe91e75a4115d6Authored: 1 month ago (Tue, 4 Aug 2026 21:32:01 +0000)Match: Assisted-by: Cursor3e4308488fc4223b455089124a1db38ded0c993bAuthored: 1 month ago (Fri, 31 Jul 2026 13:50:57 +0000)Match: co-authored-by: Cursorb90d03e092976601e5a7b6486d9c1cc3a04a78b9Authored: 2 months ago (Thu, 18 Jun 2026 16:13:06 +0000)Match: Assisted-by: Cursor22278a4e7f08c0e3ad47161c56bd1a5b1b2b10b7Authored: 5 months ago (Mon, 23 Mar 2026 18:02:58 +0000)Match: Generated-by: Cursor87ef50609ba21243e758477be873a962ec0ddda9Authored: 6 months ago (Sun, 8 Mar 2026 20:46:48 +0000)Match: Assisted-by: Cursorc982b495c957cd8e4fd409c46393001b8d6da56bAuthored: 11 months ago (Wed, 24 Sep 2025 15:00:47 +0000)Match: Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>CLAUDE.mdTool: claude-codeAGENTS.md.claudeTool: claude-code.agents/skills/verify-changes/SKILL.mdTool: unspecified---
name: verify-changes
description: Verify a 389-ds-base change by routing through the environment's build/test skill — static Python gates plus, via that skill, C compile, cmocka, RPM build and pytest suites, cargo tests, and the Cockpit UI build, picking the right checks for what was touched. Use when asked to test this change, build this, run the tests, run CI locally, or check nothing regressed before a PR. Never configure, build, or run tests directly - developer setups differ (prefixes, containers.agents/skills/write-test/SKILL.mdTool: unspecified---
name: write-test
description: >-
Add or extend a pytest integration test for 389 Directory Server under
dirsrvtests/. Use when asked to add a test, write a regression test, create a
new test file or suite, add a CLI test, or extend the test for X. Enforces the
hard conventions - topology fixtures imported from test389.topologies
(lib389.topologies does not exist), one unique :id: UUID per test docstring,
a module-level tier marker (pytestmark), DEBUGGING-aware cleanup finalizers,
and the t.agents/skills/commit-and-pr/SKILL.mdTool: unspecified---
name: commit-and-pr
description: >-
Commit and open a PR the 389-ds-base way — "Issue NNNN - summary" subject,
Bug Description/Fix Description body, Fixes:/Relates: trailer, AI-attribution
trailer, and squash-merge etiquette. Use for ANY commit, amend, or pull
request in this repo. Also guards the repo's working-tree traps — *.patch
files are gitignored and vanish from git status, CLAUDE.md/GEMINI.md are
symlinks that must never be replaced with regular files, and generated files
must .agents/skills/touch-backend/SKILL.mdTool: unspecified---
name: touch-backend
description: >-
Rules for modifying back-ldbm database code under the dual-backend (BDB +
LMDB) architecture. Read BEFORE editing anything in
ldap/servers/slapd/back-ldbm/, its db-bdb/ subdir, or its db-mdb/ subdir.
Decides where a change belongs (shared vs per-backend), whether to mirror it
into the other backend, and how to verify BOTH backends — including the trap
where the BDB pytest CI job reports green having run zero tests. Triggers:
"backend change", "bdb", "l.agents/skills/add-cli-option/SKILL.mdTool: unspecified---
name: add-cli-option
description: >-
Add or change a dsconf/dsctl/dsidm/dscreate flag, subcommand, or noun in
src/lib389 — argparse wiring, arg_to_attr maps, lib389 allowlists, generated
man pages, Cockpit coupling, and clu tests. Use when asked to add an option to
dsconf, create a new dsctl subcommand, expose a server attribute in the CLI,
or add a CLI noun. Warning: handler signatures differ per tool (dsconf/dsidm
handlers take 4 args, dsctl/dscreate take 3 — wrong arity is a TypeError.agents/skills/add-config-attribute/SKILL.mdTool: unspecified---
name: add-config-attribute
description: Add, rename, or wire a server config attribute end to end - a core cn=config attribute (the slap.h/libglobs.c chain) or a plugin config-entry attribute - including the schema line, defaults, upgrade migration for renames, tests, and the CLI/UI exposure decision. Use for a new nsslapd- setting, config knob, tunable, or plugin setting. The core chain is seven coordinated edits; a missed edit (especially the ConfigList row) makes the attribute silently invisible - re.agents/skills/ui-expose-attribute/SKILL.mdTool: unspecified---
name: ui-expose-attribute
description: >-
Expose a server setting in the Cockpit web console (389-console) or change web
UI behavior. Triggers: "show X in the UI", "add a field to the Server/Database
page", "web console", anything under src/cockpit/389-console. Warning: every
editable field needs a state value, an underscore shadow copy, and a
dirty-check array entry, and database settings must also be duplicated in the
parallel MDB class — omitting any one breaks Save silently: it never e.agentsTool: unspecified.agentsTool: unspecified.agentsTool: unspecified.agentsTool: unspecified.agentsTool: unspecified.agentsTool: unspecified.agentsTool: unspecified.agentsTool: unspecified.agentsTool: unspecified.agentsTool: unspecified.agentsTool: unspecified.agentsTool: unspecified.agentsTool: unspecified.agentsTool: unspecified.agentsTool: unspecifiedGEMINI.mdTool: geminiAGENTS.mdldap/AGENTS.mdTool: agents-md# Agent notes: ldap/
Read [docs/agents/c-server.md](../docs/agents/c-server.md) first, plus [plugins.md](../docs/agents/plugins.md) / [backends.md](../docs/agents/backends.md) / [replication.md](../docs/agents/replication.md) as relevant.
- SLAPI memory ownership is per-function — check the guide before allocating or freeing (`slapi_search_internal_get_entry` returns a copy you free; `slapi_search_get_entry` a borrow you must not).
- `slapi_pblock_get` returns 0 on success and hands out borrowed referensrc/lib389/AGENTS.mdTool: agents-md# Agent notes: src/lib389/
Read [docs/agents/lib389.md](../../docs/agents/lib389.md) and [docs/agents/cli.md](../../docs/agents/cli.md) first; workflow: the `add-cli-option` skill (`../../.agents/skills/add-cli-option/SKILL.md`).
- CLI handler signatures differ per tool: dsconf/dsidm use `(inst, basedn, log, args)`; dsctl/dscreate use `(inst, log, args)`.
- Hand-built create/add handlers silently drop new flags unless you add an explicit `if args.x is not None:` assignment.
- Never edit `man/*.8` (generatsrc/cockpit/389-console/AGENTS.mdTool: agents-md# Agent notes: src/cockpit/389-console/
Read [docs/agents/ui.md](../../../docs/agents/ui.md) first; workflow: the `ui-expose-attribute` skill (`../../../.agents/skills/ui-expose-attribute/SKILL.md`).
- PatternFly 5: handler order is `(event, value)` — the old PF4 order compiles and silently stores the event object.
- Every editable field needs state `foo`, shadow `_foo`, AND a dirty-check array entry; database settings are duplicated in the parallel MDB class — edit both.
- Command execution goes throAGENTS.mdTool: agents-md# AGENTS.md — 389 Directory Server (389-ds-base)
389 Directory Server is an LDAP server: C core (`ldap/servers/slapd/`), C plugins
(`ldap/servers/plugins/`), Rust components (workspace `src/Cargo.toml`), the lib389
Python management library (`src/lib389/`), the dsconf/dsctl/dsidm/dscreate CLI tools
(`src/lib389/cli/`), pytest integration suites (`dirsrvtests/`), and a Cockpit React
web UI (`src/cockpit/389-console/`). Autotools build, RPM packaging, GitHub Actions CI.
This file is an index. Before editidirsrvtests/AGENTS.mdTool: agents-md# Agent notes: dirsrvtests/
Read [docs/agents/testing.md](../docs/agents/testing.md) first; workflow: the `write-test` skill (`../.agents/skills/write-test/SKILL.md`).
- Import topology fixtures from `test389.topologies`; `lib389.topologies` no longer exists.
- Every `test_*`-named function under `tests/suites/` (fixtures and helpers included) needs a `:id:` UUID unique within that directory; the gate recursively searches it as text, so never copy an ID into a comment or another docstring.
- New files fol.cursorTool: cursornone