Where Are Procedural House Rules and Workflow Preferences Configured in Career-Ops?
Career-Ops stores all procedural house rules and workflow preferences in modes/_custom.md, a git-ignored user-layer file that loads after _profile.md and before mode-specific configurations.
In the santifer/career-ops repository, personalized automation logic is separated from system-wide defaults. All persistent procedural house rules—including formatting mandates, section ordering constraints, and custom workflow automations—are centralized in a specific user-controlled file that survives system updates without being overwritten.
The modes/_custom.md Configuration File
The primary location for procedural house rules is modes/_custom.md. This file belongs to the User Layer and is explicitly git-ignored, ensuring your customizations persist across repository pulls and updates. When this file is absent, the system automatically seeds it from modes/_custom.template.md according to the Data Contract defined in DATA_CONTRACT.md.
Key files governing this configuration include:
modes/_custom.md– The active user-layer file storing persistent workflow preferences.modes/_custom.template.md– Template used to initialize_custom.mdwhen missing.modes/_shared.md– Documents the loading hierarchy and system defaults.DATA_CONTRACT.md– Official specification listing_custom.mdas the canonical location for house rules.AGENTS.md– High-level architectural overview of user customization layers.
Configuration Hierarchy and Load Order
Understanding the load sequence is critical because later files override earlier ones. The system processes markdown mode files in this strict hierarchy:
modes/_shared.md → modes/_profile.md → modes/_custom.md → modes/<mode>.md
As implemented in santifer/career-ops, _custom.md is always loaded after _profile.md and before the mode-specific markdown (e.g., modes/pdf.md, modes/oferta.md). This positioning allows your house rules to override default behaviors while remaining available for mode-specific refinements. The loading order is documented in modes/_shared.md and reinforced throughout the codebase, including in batch/batch-prompt.md.
Practical Examples for Managing Workflow Preferences
Reading the Configuration Stack
Mode scripts assemble the final prompt by concatenating files in the hierarchy order. The following pseudo-code illustrates how procedural house rules are injected into the pipeline:
// Assembly logic used by mode scripts
const shared = await readFile('modes/_shared.md');
const profile = await readFile('modes/_profile.md');
const custom = await readFile('modes/_custom.md'); // ← procedural rules
const modeSpec = await readFile(`modes/${modeName}.md`);
const prompt = [
shared,
profile,
custom, // house rules applied here
modeSpec
].join('\n\n');
Defining Custom Rules
To enforce a workflow preference, edit modes/_custom.md using markdown headers and list items. For example, to mandate a References section in PDF outputs:
# modes/_custom.md
## PDF Generation Rules
- always-include: References
- date-format: YYYY-MM-DD
Initializing from Template
If modes/_custom.md does not exist, create it from the template:
cp modes/_custom.template.md modes/_custom.md
Summary
- Procedural house rules live in
modes/_custom.md, which is git-ignored to prevent update overwrites. - The configuration follows a strict hierarchy:
_shared.md→_profile.md→_custom.md→<mode>.md. - The
modes/_custom.template.mdfile provides the initial structure when creating new customizations. - Rules defined in
_custom.mdapply across all modes, as documented inmodes/_shared.md,DATA_CONTRACT.md, andAGENTS.md.
Frequently Asked Questions
What happens if I delete modes/_custom.md?
If you delete modes/_custom.md, the system will regenerate it from modes/_custom.template.md during the next run. Your previous custom rules will be lost unless backed up, since the file is git-ignored and not tracked in version control.
Can I override system-wide defaults using _custom.md?
Yes. Because modes/_custom.md loads after modes/_profile.md and before mode-specific files, any rules you define there will override default profile settings while remaining available for mode-specific refinements. This is the intended mechanism for user-level customization according to the Career-Ops data contract.
Where is the loading order documented?
The official loading hierarchy is documented in modes/_shared.md, which explicitly defines the sequence. Additional confirmation appears in DATA_CONTRACT.md and the architectural overview found in AGENTS.md, ensuring consistent implementation across all mode scripts.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →