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:

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

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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →