This is the canonical, self-contained cross-agent guide for this repository. Keep it short: put repeatable workflows in
.agents/skills/*/SKILL.md, keep CLAUDE.md as a lightweight bridge, and avoid redundant tool-specific prompt copies.
This repository manages its own AI agent prompts and skills; it must not depend on a parent or sibling repository guide.
atframe_utils is a C++ utility library for algorithms, crypto, logging, memory, networking, and common runtime helpers.
- Repository: https://github.com/atframework/atframe_utils
- Languages: C++ (C++14 minimum, C++17/C++20/C++23 features used when available)
include/: public headers (algorithm,common,log,memory,network,nostd,time, etc.).src/: implementation files.test/: private unit test framework and test cases.sample/,tools/: examples and utilities..agents/skills/: build, testing, and AI-agent maintenance playbooks.
- Respect the user's dirty workspace: inspect current file contents before editing and avoid unrelated reformatting.
- Resolve
<BUILD_DIR>before creating build trees or temporary files: read the nearest.vscode/settings.jsonforcmake.buildDirectory; if absent, infer from clangd--compile-commands-dir=...or an existing configured build tree; if no user setting is readable, usebuild. - Put all CMake build trees, AI scratch files, script output/logs, and temporary data under
<BUILD_DIR>/...; for agent scratch use<BUILD_DIR>/_agent_tmp/.... Never create ad-hoc temp files in the repository root. - Read the matching
.agents/skills/*/SKILL.mdbefore build or test work; skills contain commands and edge cases. - After C++ edits, run
clang-format -i <file>and verify withclang-format --dry-run --Werror <file>when practical.
-
Namespace: public code is under
atfw::util. -
Include guards: use
#pragma once. -
Header code: any function, method, friend, or operator body written in a header must use
ATFW_UTIL_FORCEINLINE; avoid plaininlinefor project code unless matching generated or third-party code. -
Exported ABI: interfaces declared with
ATFRAMEWORK_UTILS_APIor other*_APIexport macros must be implemented in.cppfiles, not headers, so ABI stays stable across compilers and build options. -
Naming: classes/functions use
snake_case; constants useUPPER_SNAKE_CASE; member variables use trailing_. -
Error handling: use return codes or
nostd::resulttypes as existing code does. -
Anonymous namespace + static: in
.cppfiles, file-local functions should be inside an anonymous namespace and keep thestatickeyword.namespace { static void my_helper() { /* ... */ } } // namespace
Read the matching .agents/skills/*/SKILL.md before specialized work:
| Skill | Use when |
|---|---|
build |
Configuring or building with CMake |
testing |
Running or writing private test-framework cases |
ai-agent-maintenance |
Auditing or optimizing AI agent prompts, bridge files, and skills |
AGENTS.mdis canonical for tools that support hierarchical agent instructions..agents/skills/is the portable project skill location; keep eachSKILL.mdfocused and self-contained.- Do not maintain
.github/copilot-instructions.mdcopies whenAGENTS.mdand.agents/skills/cover the same rules. CLAUDE.mdexists only to point Claude-compatible tools at this guide and.agents/skills/.- Do not make this repository depend on root, sibling, or vendored-submodule prompt files.
- Keep skill folder names and frontmatter
namevalues identical; descriptions are the discovery surface.