<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Agent Project Context</title>
    <description>The latest articles on DEV Community by Agent Project Context (agentprojectcontext).</description>
    <link>https://dev.to/agentprojectcontext</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F13570%2F023c1758-dc35-459b-a5fc-8407f902df4a.png</url>
      <title>DEV Community: Agent Project Context</title>
      <link>https://dev.to/agentprojectcontext</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/agentprojectcontext"/>
    <language>en</language>
    <item>
      <title>Project Tasks Belong in APX, Not APC</title>
      <dc:creator>Manuel Bruña</dc:creator>
      <pubDate>Tue, 14 Jul 2026 12:04:13 +0000</pubDate>
      <link>https://dev.to/agentprojectcontext/project-tasks-belong-in-apx-not-apc-268k</link>
      <guid>https://dev.to/agentprojectcontext/project-tasks-belong-in-apx-not-apc-268k</guid>
      <description>&lt;h1&gt;
  
  
  Project Tasks Belong in APX, Not APC
&lt;/h1&gt;

&lt;p&gt;A project task is operational state.&lt;/p&gt;

&lt;p&gt;That is why it belongs in APX, not APC.&lt;/p&gt;

&lt;p&gt;APC is the portable context layer. It keeps the repository contract in files like &lt;code&gt;AGENTS.md&lt;/code&gt; and &lt;code&gt;.apc/&lt;/code&gt;. APX is the daily-use runtime and tooling layer. It keeps the moving parts that should stay local: sessions, messages, conversations, caches, and, importantly, tasks.&lt;/p&gt;

&lt;p&gt;That split matters because tasks feel deceptively simple. People often try to store everything in the same place: project rules, agent definitions, memory notes, TODOs, and runtime traces. The result is a blurred system where durable context and daily operations pollute each other.&lt;/p&gt;

&lt;p&gt;APX draws a cleaner line.&lt;/p&gt;

&lt;p&gt;In the implementation, project tasks live under:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.apx/projects/&amp;lt;project-id&amp;gt;/tasks/YYYY-MM.jsonl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That location says a lot.&lt;/p&gt;

&lt;p&gt;The task log is per project, machine-local, append-only, and runtime-owned. APC does not need to version it inside the repository. The repository should define what the project is. APX should track what is happening around the project right now.&lt;/p&gt;

&lt;p&gt;The current task store is also deliberately small. Each task is created as an event, then projected into current state. The lifecycle stays simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;create&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;update&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;done&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;drop&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reopen&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open tasks can also carry a workflow status such as &lt;code&gt;pending&lt;/code&gt;, &lt;code&gt;running&lt;/code&gt;, &lt;code&gt;in_review&lt;/code&gt;, or &lt;code&gt;blocked&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That design is practical for agent work.&lt;/p&gt;

&lt;p&gt;If you ask APX to capture a follow-up, the CLI can write it without inventing a bigger project-management system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;apx task add &lt;span class="s2"&gt;"Review auth edge case"&lt;/span&gt; &lt;span class="nt"&gt;--tag&lt;/span&gt; bug &lt;span class="nt"&gt;--agent&lt;/span&gt; reviewer &lt;span class="nt"&gt;--due&lt;/span&gt; 2026-07-15
apx task list &lt;span class="nt"&gt;--state&lt;/span&gt; open
apx task &lt;span class="k"&gt;done &lt;/span&gt;t_ab12cd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those commands are useful precisely because they stay local to APX runtime state. They do not rewrite your repository contract. They do not pretend a temporary follow-up note is the same kind of artifact as &lt;code&gt;AGENTS.md&lt;/code&gt;, &lt;code&gt;.apc/project.json&lt;/code&gt;, or &lt;code&gt;.apc/mcps.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;There is also a structural reason this belongs in APX.&lt;/p&gt;

&lt;p&gt;Tasks are tied to runtime activity. APX exposes per-project task APIs, a global task view across registered projects, task summaries for status screens, and task-aware tools for the super-agent. That is operational plumbing, not portable specification. APC-compatible tools may understand agent definitions or project metadata, but they should not be forced to inherit one runtime's transient TODO stream.&lt;/p&gt;

&lt;p&gt;This is the same boundary APC and APX keep elsewhere.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APC stores durable, reviewable project intent.&lt;/li&gt;
&lt;li&gt;APX stores live execution state.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A task like "re-run migration after vendor update" is real work, but it is not project contract. It may matter only on one machine, for one agent, during one week. Storing it in APX keeps the repo clean while still making the work visible and queryable.&lt;/p&gt;

&lt;p&gt;The alternative looks worse in both directions.&lt;/p&gt;

&lt;p&gt;If tasks go into APC, the repository starts collecting operational noise that should not travel forever. If tasks stay only inside ad hoc chat threads, they become hidden, vendor-tied, and hard to inspect later.&lt;/p&gt;

&lt;p&gt;APX avoids both problems by giving tasks a first-class local store.&lt;/p&gt;

&lt;p&gt;That also makes the APC/APX relationship easier to explain:&lt;/p&gt;

&lt;p&gt;APC tells a runtime what this project means.&lt;/p&gt;

&lt;p&gt;APX tracks what this project is doing.&lt;/p&gt;

&lt;p&gt;For daily agent work, that is the right split. Keep the shared contract in APC. Keep the changing task flow in APX.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Project Config Should Travel With APC</title>
      <dc:creator>Manuel Bruña</dc:creator>
      <pubDate>Mon, 13 Jul 2026 12:02:35 +0000</pubDate>
      <link>https://dev.to/agentprojectcontext/project-config-should-travel-with-apc-1g20</link>
      <guid>https://dev.to/agentprojectcontext/project-config-should-travel-with-apc-1g20</guid>
      <description>&lt;h1&gt;
  
  
  Project Config Should Travel With APC
&lt;/h1&gt;

&lt;p&gt;When a team decides how an agent should behave in one repository, that decision should travel with the repository.&lt;/p&gt;

&lt;p&gt;That is why project config should live in APC.&lt;/p&gt;

&lt;p&gt;APC is the portable context layer. It keeps repository-owned agent context in &lt;code&gt;AGENTS.md&lt;/code&gt; and &lt;code&gt;.apc/&lt;/code&gt;. APX is the daily-use runtime and tooling layer. It reads that portable context, merges it with machine-local runtime settings, and keeps sessions, messages, and secrets outside the repo.&lt;/p&gt;

&lt;p&gt;That split becomes especially useful with configuration.&lt;/p&gt;

&lt;p&gt;APX documents two config layers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Global config lives in &lt;code&gt;~/.apx/config.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Project config lives in &lt;code&gt;.apc/config.json&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The rule is simple: machine-local settings stay machine-local, but repo-owned behavior travels with the project.&lt;/p&gt;

&lt;p&gt;This is stronger than convenience. It is a boundary that prevents silent drift.&lt;/p&gt;

&lt;p&gt;Imagine a team wants one project to route Telegram messages to a &lt;code&gt;reviewer&lt;/code&gt; agent and to use a different super-agent model than the default machine setting. If that choice lives only in one developer's &lt;code&gt;~/.apx/config.json&lt;/code&gt;, the behavior is no longer really part of the project. Another clone on another machine can register the same APC project and get different operational behavior without noticing.&lt;/p&gt;

&lt;p&gt;Putting that override in &lt;code&gt;.apc/config.json&lt;/code&gt; fixes the problem.&lt;/p&gt;

&lt;p&gt;A small example from the APX docs looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"super_agent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"groq:llama-3.3-70b-versatile"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"permission_mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"total"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"telegram"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"route_to_agent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"reviewer"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That file belongs in the repo because it expresses project intent. APX then applies it only for that project.&lt;/p&gt;

&lt;p&gt;The CLI makes the workflow explicit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;apx project config &lt;span class="nb"&gt;set &lt;/span&gt;my-app super_agent.model groq:llama-3.3-70b-versatile
apx project config &lt;span class="nb"&gt;set &lt;/span&gt;my-app telegram.route_to_agent reviewer
apx project config show my-app &lt;span class="nt"&gt;--effective&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the right division of labor.&lt;/p&gt;

&lt;p&gt;APC owns the durable contract. APX owns the runtime merge.&lt;/p&gt;

&lt;p&gt;The same docs also draw the line that matters most: never put secrets in &lt;code&gt;.apc/config.json&lt;/code&gt;. API keys, provider credentials, daemon settings for your machine, and other private runtime details belong in &lt;code&gt;~/.apx/config.json&lt;/code&gt;, not in the repository. APC should carry safe, reviewable project behavior. APX should keep private operational state local.&lt;/p&gt;

&lt;p&gt;That gives teams a clean model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;commit project overrides&lt;/li&gt;
&lt;li&gt;keep credentials local&lt;/li&gt;
&lt;li&gt;let APX merge both at runtime&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without this split, teams usually fall into one of two bad patterns.&lt;/p&gt;

&lt;p&gt;The first bad pattern is hiding project behavior in one laptop. The project becomes harder to reproduce because important agent settings are no longer visible in code review.&lt;/p&gt;

&lt;p&gt;The second bad pattern is committing too much. People start placing keys, local provider endpoints, or one-off machine tweaks into shared files because there is no clear boundary between project config and runtime config.&lt;/p&gt;

&lt;p&gt;APC and APX avoid both mistakes by naming the boundary directly.&lt;/p&gt;

&lt;p&gt;There is also a portability advantage here. APC does not need to know how APX stores sessions, messages, or caches. It only needs to preserve the project-owned facts another runtime could understand later. A committed &lt;code&gt;.apc/config.json&lt;/code&gt; is part of that project contract. Even if another APC-compatible runtime eventually reads only part of it, the repository still has a visible, reviewable source of truth for its intended behavior.&lt;/p&gt;

&lt;p&gt;So the practical thesis is small but important:&lt;/p&gt;

&lt;p&gt;If a setting describes how this repository should behave, put it in APC.&lt;/p&gt;

&lt;p&gt;If a setting describes your machine, your credentials, or your local runtime state, keep it in APX.&lt;/p&gt;

&lt;p&gt;Portable context should travel. Private runtime state should not. Project config is one of the clearest places where that APC/APX boundary pays off every day.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Skill Bodies Should Load on Demand</title>
      <dc:creator>Manuel Bruña</dc:creator>
      <pubDate>Sun, 12 Jul 2026 12:02:53 +0000</pubDate>
      <link>https://dev.to/agentprojectcontext/skill-bodies-should-load-on-demand-2kj7</link>
      <guid>https://dev.to/agentprojectcontext/skill-bodies-should-load-on-demand-2kj7</guid>
      <description>&lt;h1&gt;
  
  
  Skill Bodies Should Load on Demand
&lt;/h1&gt;

&lt;p&gt;A good skill system has two jobs that pull in opposite directions.&lt;/p&gt;

&lt;p&gt;First, the project needs durable instructions that live in version control. That is APC's job. A project can keep reusable skill files under &lt;code&gt;.apc/skills/&lt;/code&gt;, and agents can reference those skills by name from &lt;code&gt;AGENTS.md&lt;/code&gt; or &lt;code&gt;.apc/agents/&amp;lt;slug&amp;gt;.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Second, the runtime needs to stay fast and focused during actual work. That is APX's job. If every skill body is injected into every turn, the prompt gets noisy, token costs rise, and the model starts seeing instructions that do not matter for the current request.&lt;/p&gt;

&lt;p&gt;That is why APX is right to treat skill bodies as on-demand runtime material rather than permanent prompt baggage.&lt;/p&gt;

&lt;p&gt;In APC, the skill file is the project-owned source. The spec keeps this simple: skills are reusable instruction files under &lt;code&gt;.apc/skills/&amp;lt;name&amp;gt;.md&lt;/code&gt;, meant to avoid repeating the same operational guidance across many agents. That keeps the durable contract in the repo, reviewable like any other project artifact.&lt;/p&gt;

&lt;p&gt;But APX does not have to dump that whole contract into the model on every turn.&lt;/p&gt;

&lt;p&gt;The runtime code is explicit about this tradeoff. In &lt;code&gt;src/core/agent/skills/catalog.js&lt;/code&gt;, APX builds a compact skills hint block that lists only slugs. It tells the model that bodies are not loaded, that it can call &lt;code&gt;list_skills&lt;/code&gt; to browse one-line descriptions, and &lt;code&gt;load_skill({slug})&lt;/code&gt; to fetch the full body when exact syntax is needed. That is a better default than preloading everything.&lt;/p&gt;

&lt;p&gt;Why? Because most turns do not need most skills.&lt;/p&gt;

&lt;p&gt;If a user asks for a quick summary, a design opinion, or a small code fix, loading a release checklist, a deployment runbook, a security review guide, and a migration playbook all at once just burns attention. The model now has to separate relevant instructions from irrelevant ones before it can even start solving the task.&lt;/p&gt;

&lt;p&gt;APX also keeps the loading order practical. In &lt;code&gt;src/core/agent/skills/loader.js&lt;/code&gt;, project skills shadow global ones, and global skills shadow built-in runtime skills. So APC keeps ownership of project-specific behavior, while APX still provides a safe fallback catalog. That split matters: portable context stays in the repo, but runtime convenience does not get mistaken for project truth.&lt;/p&gt;

&lt;p&gt;There is an even stronger version of the same idea in APX's optional Skill Inspector. When enabled, the runtime suppresses the static slug dump and re-evaluates the current prompt each turn. High-confidence matches can inline one skill body. Lower-confidence matches become hints. Everything else stays out. The point is not magic retrieval. The point is prompt discipline.&lt;/p&gt;

&lt;p&gt;This is the deeper APC/APX boundary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APC should preserve reusable knowledge.&lt;/li&gt;
&lt;li&gt;APX should decide how much of that knowledge becomes active for this turn.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A concrete example makes the split clearer.&lt;/p&gt;

&lt;p&gt;Imagine a repo with these skills:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;release-checklist&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;security-review&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;support-triage&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs-style&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those files belong in &lt;code&gt;.apc/skills/&lt;/code&gt; because they are durable project instructions. But if the user asks, "Explain this error log and suggest the smallest patch," APX should not inject all four bodies. A small hint that those skills exist is enough. Only if the turn becomes a release task or a security audit should the runtime pay to load the matching body.&lt;/p&gt;

&lt;p&gt;That behavior keeps APC portable and APX usable.&lt;/p&gt;

&lt;p&gt;Portable context is not the same as always-active context. A project can own many valid instructions without forcing every runtime turn to carry all of them. Once you accept that distinction, the architecture gets cleaner: APC stores the skill files, APX routes them into the prompt only when the request actually needs them.&lt;/p&gt;

&lt;p&gt;That is the right default for daily agent work.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Path-Scoped Rules Belong in APC</title>
      <dc:creator>Manuel Bruña</dc:creator>
      <pubDate>Sat, 11 Jul 2026 12:05:45 +0000</pubDate>
      <link>https://dev.to/agentprojectcontext/path-scoped-rules-belong-in-apc-502g</link>
      <guid>https://dev.to/agentprojectcontext/path-scoped-rules-belong-in-apc-502g</guid>
      <description>&lt;h1&gt;
  
  
  Path-Scoped Rules Belong in APC
&lt;/h1&gt;

&lt;p&gt;A repository should not need different hidden rule copies for different tools.&lt;/p&gt;

&lt;p&gt;That is why path-scoped rules belong in APC.&lt;/p&gt;

&lt;p&gt;APC is the portable context layer. It keeps repository-owned meaning in &lt;code&gt;AGENTS.md&lt;/code&gt; and &lt;code&gt;.apc/&lt;/code&gt;. APX is the daily-use runtime and tooling layer. It helps current agents and runtimes work with that portable context while still keeping sessions, messages, and other runtime state outside the repo.&lt;/p&gt;

&lt;p&gt;The split matters most when one rule should apply only to one part of the codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  One repo, different rule zones
&lt;/h2&gt;

&lt;p&gt;Most projects do not have one flat instruction surface.&lt;/p&gt;

&lt;p&gt;Frontend code may need accessibility checks and bundle-size discipline. Backend code may need input validation at the route boundary. Support content may need a specific tone and escalation path. If all of that lives only in one giant root prompt, agents either ignore the details or carry too much irrelevant guidance into every task.&lt;/p&gt;

&lt;p&gt;APC gives a cleaner shape:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;AGENTS.md&lt;/code&gt; for repository-wide rules&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.apc/rules/&lt;/code&gt; for reusable or path-scoped rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The APC rules spec is explicit about this. &lt;code&gt;AGENTS.md&lt;/code&gt; is the broad root contract. &lt;code&gt;.apc/rules/&lt;/code&gt; is where rules can become smaller and more targeted.&lt;/p&gt;

&lt;p&gt;A recommended file can look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
description: "Backend API rules"
globs:
  - "src/api/**/*.ts"
alwaysApply: false
---

- Validate request input at the route boundary.
- Keep database writes inside service functions.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is a better boundary than copying the same instructions into Cursor rules, Claude-specific files, and a runtime-local note that no one reviews.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why APC should own these rules
&lt;/h2&gt;

&lt;p&gt;Path-scoped rules are still project meaning.&lt;/p&gt;

&lt;p&gt;They describe how &lt;em&gt;this repository&lt;/em&gt; wants work done in &lt;em&gt;these paths&lt;/em&gt;. That is exactly the kind of information that should survive a fresh clone, code review, and a runtime change. If the rules live only in one editor's private directory, they stop being part of the project contract and start being workstation trivia.&lt;/p&gt;

&lt;p&gt;APC fixes that by keeping the source in &lt;code&gt;.apc/rules/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The folder structure docs make the intent clear: path-scoped &lt;code&gt;.mdc&lt;/code&gt; rules are project-owned, safe to commit, and distinct from runtime state. Sessions, conversations, messages, caches, and private memory do not belong there. APX keeps those under &lt;code&gt;~/.apx/&lt;/code&gt; instead.&lt;/p&gt;

&lt;p&gt;That separation keeps two different concerns from bleeding together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APC stores durable guidance worth reviewing.&lt;/li&gt;
&lt;li&gt;APX stores local operational history worth keeping out of git.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why this also helps APX
&lt;/h2&gt;

&lt;p&gt;APX works best when the repository already has a clean contract.&lt;/p&gt;

&lt;p&gt;The APC reference docs describe APX as the runtime bridge that makes &lt;code&gt;.apc/&lt;/code&gt; usable today. It handles the daemon, CLI, runtimes, engines, and local storage. It should not become a second source of truth for project rules.&lt;/p&gt;

&lt;p&gt;If path-scoped guidance already lives in APC, APX can stay thin. It can help compatible runtimes use the repo context without owning a second project-specific rules database.&lt;/p&gt;

&lt;p&gt;That is also future-proof. The APC rules docs explicitly allow compatible consumers to project &lt;code&gt;.apc/rules/*.mdc&lt;/code&gt; into tool-specific rule systems when needed. The important part is not the projection target. The important part is the source stays in the repo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical example
&lt;/h2&gt;

&lt;p&gt;Suppose a monorepo has these needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;AGENTS.md&lt;/code&gt;: run tests before merge, never commit secrets, keep migrations reversible&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.apc/rules/frontend.mdc&lt;/code&gt;: preserve keyboard navigation and avoid text-only icon buttons&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.apc/rules/backend.mdc&lt;/code&gt;: validate input at the boundary and keep writes inside services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now the project can move across tools without rewriting its own discipline each time.&lt;/p&gt;

&lt;p&gt;APC keeps the rule map portable. APX keeps the runtime local. That is the right division of labor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom line
&lt;/h2&gt;

&lt;p&gt;Path-scoped rules belong in APC because they are part of the repository contract, not part of one runtime's private memory.&lt;/p&gt;

&lt;p&gt;Keep broad rules in &lt;code&gt;AGENTS.md&lt;/code&gt;. Keep narrower, reusable, path-aware rules in &lt;code&gt;.apc/rules/&lt;/code&gt;. Let APX handle execution, sessions, and local tooling around that contract instead of duplicating it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Project Skills Should Override Global Skills</title>
      <dc:creator>Manuel Bruña</dc:creator>
      <pubDate>Fri, 10 Jul 2026 12:04:48 +0000</pubDate>
      <link>https://dev.to/agentprojectcontext/project-skills-should-override-global-skills-389o</link>
      <guid>https://dev.to/agentprojectcontext/project-skills-should-override-global-skills-389o</guid>
      <description>&lt;h1&gt;
  
  
  Project Skills Should Override Global Skills
&lt;/h1&gt;

&lt;p&gt;When an agent needs operational instructions, the worst outcome is ambiguous precedence. A project wants one behavior, your machine has another, and the runtime quietly picks the wrong one.&lt;/p&gt;

&lt;p&gt;APC and APX avoid that by making skill scope explicit.&lt;/p&gt;

&lt;p&gt;APC is the portable context layer. It keeps project-owned instructions in the repository, including &lt;code&gt;.apc/skills/&lt;/code&gt;. APX is the daily-use runtime and tooling layer. It discovers those skills, lets the super-agent load them on demand, and still keeps a machine-wide skill catalog under &lt;code&gt;~/.apx/skills/&lt;/code&gt; plus its own built-in runtime skills.&lt;/p&gt;

&lt;p&gt;The important rule is simple: project skills win.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three skill lanes, one precedence order
&lt;/h2&gt;

&lt;p&gt;The APX skills docs and loader code define one runtime catalog with three sources, in this order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;project&amp;gt;/.apc/skills/&amp;lt;slug&amp;gt;/SKILL.md&lt;/code&gt; or &lt;code&gt;&amp;lt;slug&amp;gt;.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.apx/skills/&amp;lt;slug&amp;gt;/SKILL.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;APX built-in runtime skills under &lt;code&gt;src/core/runtime-skills/&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The first matching slug wins. That means a project skill can override a user-global skill, and a user-global skill can override a built-in one.&lt;/p&gt;

&lt;p&gt;That is the right order because APC owns project meaning.&lt;/p&gt;

&lt;p&gt;If a repository says its &lt;code&gt;deploy-checklist&lt;/code&gt; skill should work a certain way, that project-local instruction should beat whatever happens to be installed globally on one laptop. Otherwise the same APC project would behave differently depending on whose machine ran it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why APC needs the top slot
&lt;/h2&gt;

&lt;p&gt;Portable context only works if the repository can carry its own exceptions.&lt;/p&gt;

&lt;p&gt;Imagine you keep a global &lt;code&gt;release-notes&lt;/code&gt; skill in &lt;code&gt;~/.apx/skills/&lt;/code&gt; that fits most projects. Then one repository has stricter rules: mention migration risk, list MCP changes separately, and never claim a release is safe without test output.&lt;/p&gt;

&lt;p&gt;That repository should not need a forked runtime or a custom machine setup. It should only need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.apc/skills/release-notes/SKILL.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now APX reads the project skill first, and the super-agent loads the correct instructions for that repository.&lt;/p&gt;

&lt;p&gt;That is APC doing its job: project-specific context travels with the repo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why global skills still matter
&lt;/h2&gt;

&lt;p&gt;Global skills are still useful. They are the machine-wide layer for habits you want everywhere on one workstation.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;personal writing style&lt;/li&gt;
&lt;li&gt;preferred debugging checklist&lt;/li&gt;
&lt;li&gt;local publishing workflow&lt;/li&gt;
&lt;li&gt;a custom skill for a tool only you use&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;APX stores those in &lt;code&gt;~/.apx/skills/&lt;/code&gt;, so they stay available across projects on that machine without polluting any repository.&lt;/p&gt;

&lt;p&gt;That is also the APC/APX split in miniature:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APC keeps shared, reviewable, repo-owned instructions.&lt;/li&gt;
&lt;li&gt;APX keeps operator-local runtime customizations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A global skill should be convenient. It should not outrank a project contract.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why built-in skills stay as the safety net
&lt;/h2&gt;

&lt;p&gt;APX keeps a third lane for built-in runtime skills. The docs describe those as private: always available, always active, and not deletable from scope settings.&lt;/p&gt;

&lt;p&gt;That matters because APX ships its own operational knowledge there: &lt;code&gt;apx-*&lt;/code&gt; skills, &lt;code&gt;apc-context&lt;/code&gt;, and runtime-specific guidance. If users could accidentally delete or fully disable that foundation, the runtime would lose basic self-knowledge about how to use its own commands and structures.&lt;/p&gt;

&lt;p&gt;So the full design is not just “project overrides global.” It is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;project wins when the repo needs a local rule&lt;/li&gt;
&lt;li&gt;global wins when the operator wants a machine-wide customization&lt;/li&gt;
&lt;li&gt;built-in remains as the fallback safety net&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  On-demand loading keeps prompt cost low
&lt;/h2&gt;

&lt;p&gt;This precedence model works well because APX does not dump full skill bodies into every prompt.&lt;/p&gt;

&lt;p&gt;The runtime exposes &lt;code&gt;list_skills&lt;/code&gt; and &lt;code&gt;load_skill&lt;/code&gt;, and APX documents that &lt;code&gt;load_skill&lt;/code&gt; pulls the full body only for the current turn. The baseline prompt stays small, while exact instructions stay available when needed.&lt;/p&gt;

&lt;p&gt;That means you can keep project-specific skill overrides in APC without paying for all of them on every message.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical rule
&lt;/h2&gt;

&lt;p&gt;Use each lane for its real job.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Put repo-owned exceptions in &lt;code&gt;.apc/skills/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Put personal machine-wide helpers in &lt;code&gt;~/.apx/skills/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Leave built-in APX runtime skills alone unless you are intentionally shadowing them with a better local or project version.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If one slug means different things in two repositories, that is not a bug. That is exactly why the project lane exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom line
&lt;/h2&gt;

&lt;p&gt;Project skills should override global skills because APC owns portable project intent.&lt;/p&gt;

&lt;p&gt;APX makes that practical with a clear precedence chain, built-in fallback skills, and turn-local skill loading. The result is predictable behavior: the repo decides project meaning, the machine adds personal convenience, and the runtime still keeps its own minimum operational floor.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>A Stable Project ID Keeps APC Portable and APX Local</title>
      <dc:creator>Manuel Bruña</dc:creator>
      <pubDate>Thu, 09 Jul 2026 12:04:01 +0000</pubDate>
      <link>https://dev.to/agentprojectcontext/a-stable-project-id-keeps-apc-portable-and-apx-local-46ag</link>
      <guid>https://dev.to/agentprojectcontext/a-stable-project-id-keeps-apc-portable-and-apx-local-46ag</guid>
      <description>&lt;h1&gt;
  
  
  A Stable Project ID Keeps APC Portable and APX Local
&lt;/h1&gt;

&lt;p&gt;A lot of agent tooling problems start with a bad identity model. If a runtime treats a folder path as the project identity, everything looks fine until you rename the repo, move it to another machine, or register the same code from a different checkout.&lt;/p&gt;

&lt;p&gt;APC and APX avoid that trap by splitting identity from runtime state.&lt;/p&gt;

&lt;p&gt;APC is the portable context layer. It keeps the committed project contract in the repository. APX is the daily-use runtime and tooling layer. It reads that contract, then keeps sessions, messages, caches, and other machine-local state outside the repo.&lt;/p&gt;

&lt;p&gt;A small file is what makes that split work: &lt;code&gt;.apc/project.json&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;project.json&lt;/code&gt; gives the project a durable identity
&lt;/h2&gt;

&lt;p&gt;The APC docs define &lt;code&gt;.apc/project.json&lt;/code&gt; as the canonical metadata file for a project. Its job is intentionally boring: say what the project is called, which APC version it targets, and when that metadata set was created.&lt;/p&gt;

&lt;p&gt;A minimal APC shape looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"My Project"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.1.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"apc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.1.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"created"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-05-08T00:00:00Z"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;APX extends that practical story with one more field when it initializes a real working project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"my-app"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.1.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"apf"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.1.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"created"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-01-15T10:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"apx_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"077078af9dd7"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That &lt;code&gt;apx_id&lt;/code&gt; is the key detail. APX documents it as the stable identifier that links the committed APC definition to local runtime state under &lt;code&gt;~/.apx/projects/&amp;lt;apx_id&amp;gt;/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So folder path is not the identity. Repo display name is not enough either. The stable id is the bridge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why that matters in daily work
&lt;/h2&gt;

&lt;p&gt;Imagine this sequence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You run &lt;code&gt;apx init&lt;/code&gt; in a repository.&lt;/li&gt;
&lt;li&gt;APX creates &lt;code&gt;.apc/project.json&lt;/code&gt; and generates &lt;code&gt;apx_id&lt;/code&gt; once.&lt;/li&gt;
&lt;li&gt;You register the project with APX.&lt;/li&gt;
&lt;li&gt;APX stores runtime state under &lt;code&gt;~/.apx/projects/&amp;lt;apx_id&amp;gt;/&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now later you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;rename the repo directory&lt;/li&gt;
&lt;li&gt;move it to another path&lt;/li&gt;
&lt;li&gt;clone it on another machine&lt;/li&gt;
&lt;li&gt;reopen it from a different tool&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The APC contract still travels with the repo, because it lives in &lt;code&gt;AGENTS.md&lt;/code&gt; and &lt;code&gt;.apc/&lt;/code&gt;. The APX runtime state still has a clear local home, because it hangs off the stable id, not off an unstable folder name.&lt;/p&gt;

&lt;p&gt;That is exactly the APC/APX division in practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APC says what project this is.&lt;/li&gt;
&lt;li&gt;APX says what happened while this machine worked on it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without a stable id, a runtime has to guess. It may create duplicate local projects, lose message history after a rename, or tie private runtime state too tightly to one filesystem path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Portable definition, local runtime
&lt;/h2&gt;

&lt;p&gt;The APX project docs make the storage split explicit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;repo&amp;gt;/.apc/&lt;/code&gt; holds agent definitions, skills, MCP hints, and project config.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;~/.apx/projects/&amp;lt;id&amp;gt;/&lt;/code&gt; holds sessions, conversations, messages, caches, task logs, and other runtime files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That design has two benefits.&lt;/p&gt;

&lt;p&gt;First, the repository stays reviewable and clone-safe. APC contains portable context, not machine junk.&lt;/p&gt;

&lt;p&gt;Second, APX stays honest about privacy and locality. Runtime transcripts, caches, and logs do not quietly end up in git just because a tool needed somewhere convenient to put them.&lt;/p&gt;

&lt;h2&gt;
  
  
  One practical rule
&lt;/h2&gt;

&lt;p&gt;Treat &lt;code&gt;.apc/project.json&lt;/code&gt; like identity, not like a scratchpad.&lt;/p&gt;

&lt;p&gt;Do not turn it into a dump of runtime flags, private state, or session metadata. The APC spec keeps it small for a reason. The more stable it stays, the more reliable the bridge to APX becomes.&lt;/p&gt;

&lt;p&gt;Likewise, do not change &lt;code&gt;apx_id&lt;/code&gt; casually. APX documents that field as the permanent key for the local runtime folder. If you break that link, APX will not know that old local state belongs to the same committed project. If you move the repo, the APX docs point to &lt;code&gt;apx project rebuild&lt;/code&gt; as the right repair step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom line
&lt;/h2&gt;

&lt;p&gt;Portable context needs a stable identity, not a lucky pathname.&lt;/p&gt;

&lt;p&gt;APC provides the committed project contract. APX provides the local runtime layer. &lt;code&gt;.apc/project.json&lt;/code&gt; is the small boundary object that lets both sides do their job without leaking into each other.&lt;/p&gt;

&lt;p&gt;That is not glamorous design. It is better: it keeps project meaning portable and runtime state local.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Agent Slugs Are the Smallest Handoff Key Between APC and APX</title>
      <dc:creator>Manuel Bruña</dc:creator>
      <pubDate>Wed, 08 Jul 2026 12:03:00 +0000</pubDate>
      <link>https://dev.to/agentprojectcontext/agent-slugs-are-the-smallest-handoff-key-between-apc-and-apx-dom</link>
      <guid>https://dev.to/agentprojectcontext/agent-slugs-are-the-smallest-handoff-key-between-apc-and-apx-dom</guid>
      <description>&lt;h1&gt;
  
  
  Agent Slugs Are the Smallest Handoff Key Between APC and APX
&lt;/h1&gt;

&lt;p&gt;A lot of APC and APX discussion happens at the level of folders, memory, or runtimes. But there is a smaller boundary that matters every day: the agent slug.&lt;/p&gt;

&lt;p&gt;APC is the portable context layer. It keeps the project contract in the repository: &lt;code&gt;AGENTS.md&lt;/code&gt;, &lt;code&gt;.apc/project.json&lt;/code&gt;, &lt;code&gt;.apc/agents/&amp;lt;slug&amp;gt;.md&lt;/code&gt;, skills, commands, and curated memory that is safe to share. APX is the daily-use runtime and tooling layer. It reads that contract, runs agents, stores local runtime state under &lt;code&gt;~/.apx/&lt;/code&gt;, and gives you CLI, daemon, and web admin workflows.&lt;/p&gt;

&lt;p&gt;The slug is where those two layers meet.&lt;/p&gt;

&lt;p&gt;In APC, the slug identifies the structured agent definition. In APX, the same slug becomes the routing key for commands like &lt;code&gt;apx run &amp;lt;slug&amp;gt;&lt;/code&gt;, &lt;code&gt;apx exec -a &amp;lt;slug&amp;gt;&lt;/code&gt;, &lt;code&gt;apx memory &amp;lt;slug&amp;gt;&lt;/code&gt;, and &lt;code&gt;apx session new &amp;lt;slug&amp;gt;&lt;/code&gt;. APX also uses it to place runtime files under per-agent paths such as &lt;code&gt;~/.apx/projects/&amp;lt;project-id&amp;gt;/agents/&amp;lt;slug&amp;gt;/sessions&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That sounds small, but it solves a real design problem: how do you keep a portable project contract and a local runtime aligned without inventing hidden IDs for every agent?&lt;/p&gt;

&lt;p&gt;The answer is not to make the runtime smarter. The answer is to keep the join key boring.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;If the shared name for an agent is unstable, everything around it gets noisy.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Session history stops feeling continuous.&lt;/li&gt;
&lt;li&gt;Runtime memory becomes harder to inspect.&lt;/li&gt;
&lt;li&gt;Telegram routing, CLI commands, and follow-up sessions become less predictable.&lt;/li&gt;
&lt;li&gt;Teams start treating agent definitions like disposable prompts instead of durable project roles.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A stable slug avoids that.&lt;/p&gt;

&lt;p&gt;For example, if a repository defines &lt;code&gt;.apc/agents/reviewer.md&lt;/code&gt;, APX can keep using &lt;code&gt;reviewer&lt;/code&gt; everywhere:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;apx run reviewer &lt;span class="nt"&gt;--runtime&lt;/span&gt; claude-code &lt;span class="s2"&gt;"Review the open PRs"&lt;/span&gt;
apx &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; reviewer &lt;span class="s2"&gt;"Summarize test risk"&lt;/span&gt;
apx memory reviewer
apx session new reviewer &lt;span class="nt"&gt;--title&lt;/span&gt; &lt;span class="s2"&gt;"Follow-up audit"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is a better contract than a display name. You can rename a role description, change the model, or expand the skills list, and the runtime history still lands under the same agent lane.&lt;/p&gt;

&lt;h2&gt;
  
  
  What should stay stable
&lt;/h2&gt;

&lt;p&gt;The slug should describe the durable responsibility, not the mood of the prompt.&lt;/p&gt;

&lt;p&gt;Good slugs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;reviewer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;planner&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;backend&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;release-manager&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Weak slugs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;smart-reviewer-v2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;best-agent-final&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;claude-helper&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;telegram-reviewer-temporary&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those weaker names leak implementation details into the project contract. They age badly when you switch models, channels, or runtimes. APC should describe the project role. APX should decide how that role runs today.&lt;/p&gt;

&lt;h2&gt;
  
  
  APC side, APX side
&lt;/h2&gt;

&lt;p&gt;APC keeps the definition portable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;AGENTS.md&lt;/code&gt; holds repository-wide rules.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.apc/agents/&amp;lt;slug&amp;gt;.md&lt;/code&gt; holds the structured agent definition.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.apc/agents/&amp;lt;slug&amp;gt;/memory.md&lt;/code&gt; can hold curated, team-safe memory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;APX keeps the runtime local:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sessions&lt;/li&gt;
&lt;li&gt;conversations&lt;/li&gt;
&lt;li&gt;message logs&lt;/li&gt;
&lt;li&gt;runtime memory and caches&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That split only stays clean if both sides can point to the same agent identity without translation glue. The slug is enough.&lt;/p&gt;

&lt;p&gt;This is also why APX does not need a second hidden naming system for normal agent work. The portable name from APC already gives the runtime a stable filesystem lane, command target, and audit trail anchor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical rule
&lt;/h2&gt;

&lt;p&gt;Pick slugs like you would pick API names.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stable over clever&lt;/li&gt;
&lt;li&gt;Role-based over model-based&lt;/li&gt;
&lt;li&gt;Short over decorative&lt;/li&gt;
&lt;li&gt;Reusable over temporary&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you need to change how an agent behaves, edit the definition. If you need a different responsibility, create another slug.&lt;/p&gt;

&lt;p&gt;That keeps APC readable in the repo and APX readable on disk.&lt;/p&gt;

&lt;p&gt;The bigger APC/APX idea is often described as portable context plus local runtime. That is true. But in daily use, the smallest piece doing real work is often just one good slug.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Not Every Memory Belongs in APC</title>
      <dc:creator>Manuel Bruña</dc:creator>
      <pubDate>Tue, 07 Jul 2026 12:03:53 +0000</pubDate>
      <link>https://dev.to/agentprojectcontext/not-every-memory-belongs-in-apc-3773</link>
      <guid>https://dev.to/agentprojectcontext/not-every-memory-belongs-in-apc-3773</guid>
      <description>&lt;h1&gt;
  
  
  Not Every Memory Belongs in APC
&lt;/h1&gt;

&lt;p&gt;A lot of agent setups fail for the same reason: they treat all memory as one bucket.&lt;/p&gt;

&lt;p&gt;That is not what APC and APX are trying to do.&lt;/p&gt;

&lt;p&gt;APC is the portable context layer. It should keep only durable project facts that are safe to share, review, and commit.&lt;br&gt;
APX is the daily runtime layer. It should keep local agent memory, cross-channel recall, sessions, and other runtime state outside the repo.&lt;/p&gt;

&lt;p&gt;That split matters because different kinds of memory solve different problems.&lt;/p&gt;

&lt;p&gt;If you put everything into APC, the repo fills with private notes, temporary conclusions, and stale conversation debris.&lt;br&gt;
If you keep everything in APX, the project loses durable knowledge every time a machine, runtime, or session changes.&lt;/p&gt;

&lt;p&gt;The better model is simple: APC stores what the project should remember. APX stores what the runtime needs in order to work.&lt;/p&gt;
&lt;h2&gt;
  
  
  APC memory: portable, curated, team-safe
&lt;/h2&gt;

&lt;p&gt;In APC, curated memory lives with the project under:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.apc/agents/&amp;lt;slug&amp;gt;/memory.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That file is for durable facts tied to the agent's project role. Good examples are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;long-lived constraints&lt;/li&gt;
&lt;li&gt;team conventions&lt;/li&gt;
&lt;li&gt;architectural decisions&lt;/li&gt;
&lt;li&gt;recurring responsibilities&lt;/li&gt;
&lt;li&gt;stable domain facts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This kind of memory is boring in the best way. It is plain Markdown, easy to diff, easy to review, and easy to migrate to another tool.&lt;/p&gt;

&lt;p&gt;A reviewer agent might keep something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Memory - reviewer&lt;/span&gt;

&lt;span class="gu"&gt;## Project facts&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Prefer findings-first reviews.
&lt;span class="p"&gt;-&lt;/span&gt; API compatibility matters more than internal file layout during v0.1.

&lt;span class="gu"&gt;## Durable decisions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Use pnpm, never npm.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That belongs in APC because another contributor, another IDE, or another runtime should be able to read the same project rule later.&lt;/p&gt;

&lt;h2&gt;
  
  
  APX memory: local, operational, runtime-owned
&lt;/h2&gt;

&lt;p&gt;APX has a different job. It is the runtime and tooling layer, so it keeps machine-local memory where the repo should not.&lt;/p&gt;

&lt;p&gt;Per-agent runtime memory lives under:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.apx/projects/&amp;lt;project-id&amp;gt;/agents/&amp;lt;slug&amp;gt;/memory.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That file is injected into the agent prompt on every call. It is useful for local operational context, owner preferences, and durable notes that help the runtime, but should not automatically travel with the repository.&lt;/p&gt;

&lt;p&gt;APX also has a separate cross-channel memory system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.apx/memory.md
~/.apx/memory.db
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That layer powers automatic recall across channels. It can remember recent facts, retrieve semantically relevant past messages, and compact long histories without turning the repo into a session dump.&lt;/p&gt;

&lt;p&gt;So APX already tells us something important: not all memory should be committed, and not all memory should be global.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical rule: decide by visibility, not by format
&lt;/h2&gt;

&lt;p&gt;The mistake teams make is judging memory by file type instead of visibility.&lt;br&gt;
A &lt;code&gt;memory.md&lt;/code&gt; file can still be the wrong place if the content is private, temporary, or unreviewed.&lt;/p&gt;

&lt;p&gt;A better rule is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Put it in APC if the whole project may need it later and it is safe to commit.&lt;/li&gt;
&lt;li&gt;Keep it in APX if it is runtime-local, personal, temporary, or derived from ongoing sessions.&lt;/li&gt;
&lt;li&gt;Leave it out of both if it is raw noise.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Use pnpm, never npm" belongs in APC.&lt;/li&gt;
&lt;li&gt;"Owner prefers short PR summaries" may belong in APX runtime memory.&lt;/li&gt;
&lt;li&gt;"This session explored three bad refactors before finding the safe path" belongs in session history, not in either memory file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last example is the real trap. Raw transcripts feel informative, but they age badly. Future contributors do not need every thought. They need the final durable fact, constraint, or decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why APC and APX fit together here
&lt;/h2&gt;

&lt;p&gt;This is where the APC/APX split becomes useful instead of abstract.&lt;/p&gt;

&lt;p&gt;APC gives the project one portable place for curated meaning.&lt;br&gt;
APX gives daily work a local runtime that can keep richer state without leaking it into the repo.&lt;/p&gt;

&lt;p&gt;That means you can switch tools, machines, or runtimes without losing the project contract, while still letting the runtime keep the messy memory it needs.&lt;/p&gt;

&lt;p&gt;The clean workflow is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Work in APX.&lt;/li&gt;
&lt;li&gt;Let sessions, recall, and runtime memory stay local.&lt;/li&gt;
&lt;li&gt;Extract only durable, sanitized facts into APC.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Not every memory deserves version control.&lt;br&gt;
But every durable project fact should have a portable home.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>APC Plans Keep Durable Work Out of the Chat</title>
      <dc:creator>Manuel Bruña</dc:creator>
      <pubDate>Mon, 06 Jul 2026 12:04:19 +0000</pubDate>
      <link>https://dev.to/agentprojectcontext/apc-plans-keep-durable-work-out-of-the-chat-4jd2</link>
      <guid>https://dev.to/agentprojectcontext/apc-plans-keep-durable-work-out-of-the-chat-4jd2</guid>
      <description>&lt;h1&gt;
  
  
  APC Plans Keep Durable Work Out of the Chat
&lt;/h1&gt;

&lt;p&gt;APC plans exist for one reason: some work should survive the session, but not the noise that produced it.&lt;/p&gt;

&lt;p&gt;That is the clean split between APC and APX.&lt;br&gt;
APC is the portable context layer, so it holds project-owned facts that should travel with the repo.&lt;br&gt;
APX is the daily runtime and tooling layer, so it holds the messy work: sessions, transcripts, scratch notes, local state, and all the back-and-forth that gets you to a decision.&lt;/p&gt;

&lt;p&gt;The mistake is simple: people either keep too little, or keep too much.&lt;br&gt;
If you keep only the final code diff, you lose the reasoning that made the change safe.&lt;br&gt;
If you dump raw chat into the repo, you import noise, private data, and half-finished ideas that nobody can trust later.&lt;br&gt;
&lt;code&gt;.apc/plans/&lt;/code&gt; is the middle path.&lt;/p&gt;

&lt;p&gt;A good APC plan is not a transcript and not a task board. It is a durable artifact that answers a specific question for future work.&lt;br&gt;
The spec is explicit about what belongs there:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;implementation plans that are approved or still useful later&lt;/li&gt;
&lt;li&gt;migration plans&lt;/li&gt;
&lt;li&gt;release plans&lt;/li&gt;
&lt;li&gt;investigation summaries with next steps&lt;/li&gt;
&lt;li&gt;open decisions and constraints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That sounds small, but it is a strong rule.&lt;br&gt;
It means a plan stays useful after the original session is gone.&lt;br&gt;
It also means another tool, another machine, or another contributor can pick up the work without replaying the whole conversation.&lt;/p&gt;

&lt;p&gt;A concrete example helps.&lt;br&gt;
Imagine you are moving auth checks from a service into a gateway.&lt;br&gt;
During the APX session, you may explore three designs, reject two, and test a couple of edge cases.&lt;br&gt;
That process belongs in APX runtime state, because it is temporary and often noisy.&lt;br&gt;
But the final shared decision is different:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Auth&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;migration"&lt;/span&gt;
&lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;active&lt;/span&gt;
&lt;span class="na"&gt;owner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;architect&lt;/span&gt;
&lt;span class="na"&gt;updated&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-07-06&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Auth migration&lt;/span&gt;

&lt;span class="gu"&gt;## Goal&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Move token validation to the gateway.

&lt;span class="gu"&gt;## Constraints&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Preserve existing session cookies during migration.
&lt;span class="p"&gt;-&lt;/span&gt; Keep the old path working until rollout is complete.

&lt;span class="gu"&gt;## Steps&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Add gateway validation middleware.
&lt;span class="p"&gt;-&lt;/span&gt; Add compatibility tests.
&lt;span class="p"&gt;-&lt;/span&gt; Remove duplicate service checks after rollout.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That file is worth keeping because it compresses a long conversation into something actionable.&lt;br&gt;
It tells a future contributor what the project decided, what still matters, and what should happen next.&lt;br&gt;
It does not ask them to trust a transcript.&lt;br&gt;
It gives them the current contract.&lt;/p&gt;

&lt;p&gt;This is the deeper point: APC plans are not for storing thought streams.&lt;br&gt;
They are for storing decisions that have already earned their place in the repo.&lt;br&gt;
That makes them reviewable, diffable, and portable.&lt;br&gt;
A plan can move through code review like any other project artifact.&lt;br&gt;
A raw session cannot.&lt;/p&gt;

&lt;p&gt;APX still matters here, because APX is where the work happens day to day.&lt;br&gt;
It is the runtime that can collect the session, keep the local audit trail, and help you recover the useful part.&lt;br&gt;
But APX should not become a dumping ground for durable project intent.&lt;br&gt;
The clean workflow is: work in APX, extract the stable facts, then write them into APC when they are safe and useful for the team.&lt;/p&gt;

&lt;p&gt;That rule is easy to apply:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If only the current session needs it, keep it in APX.&lt;/li&gt;
&lt;li&gt;If the whole project may need it later, put it in APC.&lt;/li&gt;
&lt;li&gt;If it is still fuzzy, keep it local until the decision settles.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plans are the part of APC that makes projects remember how they move.&lt;br&gt;
Not every conversation deserves a permanent record.&lt;br&gt;
But every durable decision deserves a home.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>External Runtimes Should Read `AGENTS.md` Directly</title>
      <dc:creator>Manuel Bruña</dc:creator>
      <pubDate>Sun, 05 Jul 2026 12:03:43 +0000</pubDate>
      <link>https://dev.to/agentprojectcontext/external-runtimes-should-read-agentsmd-directly-4e5a</link>
      <guid>https://dev.to/agentprojectcontext/external-runtimes-should-read-agentsmd-directly-4e5a</guid>
      <description>&lt;h1&gt;
  
  
  External Runtimes Should Read &lt;code&gt;AGENTS.md&lt;/code&gt; Directly
&lt;/h1&gt;

&lt;p&gt;The cleanest APX design is not a translation layer. It is a handoff.&lt;/p&gt;

&lt;p&gt;APC is the portable context layer. APX is the daily-use runtime and tooling layer. When APX launches an external runtime like Claude Code, Codex, OpenCode, or Aider, the job is simple: locate the project, start the runtime, and let that runtime read the project's own contract.&lt;/p&gt;

&lt;p&gt;That keeps one source of truth in the repo and keeps APX thin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;The failure mode is easy to miss. A tool starts helpful, then begins copying project rules into machine-local prompt blobs, cached summaries, or hidden adapter state. At first it looks convenient. Later it drifts.&lt;/p&gt;

&lt;p&gt;Once a runtime-specific copy exists, every change has to move twice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;once in APC, where the project contract lives&lt;/li&gt;
&lt;li&gt;once in the runtime wrapper, where the copied version got stuck&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is how teams end up with one repo, two realities.&lt;/p&gt;

&lt;p&gt;APX avoids that by staying at the execution boundary. It does not need to rewrite the contract. It only needs to preserve the path to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What APX should do
&lt;/h2&gt;

&lt;p&gt;APX already has the right job shape:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;apx init&lt;/code&gt; creates the APC project structure&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;apx project add&lt;/code&gt; registers the repo as a project&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;apx run&lt;/code&gt; delegates work to a runtime&lt;/li&gt;
&lt;li&gt;runtime state, sessions, and message logs stay local in &lt;code&gt;~/.apx/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That split is the point. APC keeps the repo portable. APX keeps the machine-local work local.&lt;/p&gt;

&lt;p&gt;So when an external runtime starts, the best outcome is boring: it reads &lt;code&gt;AGENTS.md&lt;/code&gt;, loads the repo rules, and acts on them directly.&lt;/p&gt;

&lt;p&gt;No duplicate prompt store. No mirrored policy file. No runtime-only copy of the project contract.&lt;/p&gt;

&lt;h2&gt;
  
  
  A concrete example
&lt;/h2&gt;

&lt;p&gt;Imagine a repo with this shape:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;project-root/
├── AGENTS.md
└── .apc/
    ├── project.json
    └── agents/
        └── reviewer.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A review task might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;apx run reviewer &lt;span class="nt"&gt;--runtime&lt;/span&gt; claude-code &lt;span class="s2"&gt;"Review the open PR and summarize risk"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The repo already defines the project intent. APX does not need to restate it in a second format. It can pass control to the runtime, and the runtime can read the same contract the next developer or agent would read from disk.&lt;/p&gt;

&lt;p&gt;That is valuable because the repo stays reviewable. If &lt;code&gt;AGENTS.md&lt;/code&gt; changes, you see the change in git. If the runtime behavior changes, you inspect APX. Each layer has one job.&lt;/p&gt;

&lt;h2&gt;
  
  
  What not to do
&lt;/h2&gt;

&lt;p&gt;Do not treat APX as a place to accumulate project meaning.&lt;/p&gt;

&lt;p&gt;If a rule should travel with the repo, keep it in APC. If a rule only matters on this machine or in this session, keep it in APX runtime state. If you blur that line, the project stops being portable.&lt;/p&gt;

&lt;p&gt;A common mistake is to think more adaptation means better UX. Usually the opposite is true. Extra translation layers add ambiguity. They also make debugging harder, because no one knows whether the bug lives in the repo contract or in the wrapper that copied it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom line
&lt;/h2&gt;

&lt;p&gt;APC should define the project contract once.&lt;/p&gt;

&lt;p&gt;APX should execute that contract, not rewrite it.&lt;/p&gt;

&lt;p&gt;When external runtimes read &lt;code&gt;AGENTS.md&lt;/code&gt; directly, the repo stays the source of truth, the runtime stays thin, and the whole system gets easier to trust.&lt;/p&gt;

&lt;p&gt;That is the real value of the split.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>APC Commands Stay in the Repo. APX Just Reads Them.</title>
      <dc:creator>Manuel Bruña</dc:creator>
      <pubDate>Sat, 04 Jul 2026 12:03:27 +0000</pubDate>
      <link>https://dev.to/agentprojectcontext/apc-commands-stay-in-the-repo-apx-just-reads-them-j2l</link>
      <guid>https://dev.to/agentprojectcontext/apc-commands-stay-in-the-repo-apx-just-reads-them-j2l</guid>
      <description>&lt;h1&gt;
  
  
  APC Commands Stay in the Repo. APX Just Reads Them.
&lt;/h1&gt;

&lt;p&gt;The easiest way to weaken APC is to treat &lt;code&gt;.apc/commands/&lt;/code&gt; like a random dump for shell snippets.&lt;/p&gt;

&lt;p&gt;That misses the point.&lt;/p&gt;

&lt;p&gt;APC is the portable context layer. APX is the daily-use runtime and tooling layer. Commands sit on the APC side because they describe project behavior, not machine behavior.&lt;/p&gt;

&lt;p&gt;APX makes that folder useful. APC keeps it portable.&lt;/p&gt;

&lt;h2&gt;
  
  
  What &lt;code&gt;.apc/commands/&lt;/code&gt; is for
&lt;/h2&gt;

&lt;p&gt;The APX docs already treat commands as part of the project layout. &lt;code&gt;apx init&lt;/code&gt; creates &lt;code&gt;.apc/agents/&lt;/code&gt;, &lt;code&gt;.apc/skills/&lt;/code&gt;, and &lt;code&gt;.apc/commands/&lt;/code&gt; together. That matters because it turns commands into a first-class project artifact, not an afterthought.&lt;/p&gt;

&lt;p&gt;APX also exposes them directly through the CLI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;apx command list&lt;/code&gt; lists workflow commands in &lt;code&gt;.apc/commands/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;apx command show &amp;lt;name&amp;gt;&lt;/code&gt; prints the command content&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the runtime does not own the command. It only discovers and reads it.&lt;/p&gt;

&lt;p&gt;That is the right split.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why markdown works
&lt;/h2&gt;

&lt;p&gt;A command file in APC should be easy to review, easy to diff, and easy to copy to another repo.&lt;/p&gt;

&lt;p&gt;Markdown gives you that.&lt;/p&gt;

&lt;p&gt;It lets you keep the file small and readable while still documenting intent. A command can look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Release checklist&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; Run tests.
&lt;span class="p"&gt;2.&lt;/span&gt; Check the diff.
&lt;span class="p"&gt;3.&lt;/span&gt; Summarize risk before merge.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is useful even before APX touches it. A teammate can read it. A future agent can read it. Git can review it.&lt;/p&gt;

&lt;p&gt;The point is not that markdown is magical. The point is that markdown keeps the command portable.&lt;/p&gt;

&lt;h2&gt;
  
  
  What belongs there
&lt;/h2&gt;

&lt;p&gt;Put workflow-level instructions in &lt;code&gt;.apc/commands/&lt;/code&gt; when they answer a project question like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How do we review a PR here?&lt;/li&gt;
&lt;li&gt;How do we prepare a release?&lt;/li&gt;
&lt;li&gt;How do we summarize a change safely?&lt;/li&gt;
&lt;li&gt;What steps do we follow before merging?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are project rules. They belong with the project.&lt;/p&gt;

&lt;p&gt;A good test is simple: if you want the same command on a clean clone, or on another machine, it belongs in APC.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does not belong there
&lt;/h2&gt;

&lt;p&gt;Do not put runtime noise in &lt;code&gt;.apc/commands/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API keys&lt;/li&gt;
&lt;li&gt;session history&lt;/li&gt;
&lt;li&gt;machine-specific paths&lt;/li&gt;
&lt;li&gt;temporary output&lt;/li&gt;
&lt;li&gt;anything that only makes sense on one laptop&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the file is about state, secrets, or one-off execution details, keep it in APX runtime storage instead.&lt;/p&gt;

&lt;p&gt;APX already has a place for that local state. APC should stay clone-safe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the boundary matters
&lt;/h2&gt;

&lt;p&gt;This is the real value of the split:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APC stores the project contract.&lt;/li&gt;
&lt;li&gt;APX reads that contract and runs with it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When commands live in APC, you can move the repo and keep the workflow.&lt;br&gt;
When commands live in APX runtime, you get local flexibility without polluting the repo.&lt;/p&gt;

&lt;p&gt;That means fewer surprises when tools change. It also means less drift between agents, because the workflow is versioned with the code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom line
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;.apc/commands/&lt;/code&gt; is not a junk drawer.&lt;/p&gt;

&lt;p&gt;It is a portable workflow layer, owned by the project and surfaced by APX.&lt;/p&gt;

&lt;p&gt;If a command explains how this repo works, commit it to APC.&lt;br&gt;
If it only explains what happened on this machine, keep it in APX.&lt;/p&gt;

&lt;p&gt;That boundary is small, but it saves a lot of confusion later.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>APX Skills Are the Adoption Layer for APC</title>
      <dc:creator>Manuel Bruña</dc:creator>
      <pubDate>Fri, 03 Jul 2026 12:18:52 +0000</pubDate>
      <link>https://dev.to/agentprojectcontext/apx-skills-are-the-adoption-layer-for-apc-o94</link>
      <guid>https://dev.to/agentprojectcontext/apx-skills-are-the-adoption-layer-for-apc-o94</guid>
      <description>&lt;h1&gt;
  
  
  APX Skills Are the Adoption Layer for APC
&lt;/h1&gt;

&lt;p&gt;APC is the project contract. APX is the runtime layer that makes that contract usable today. The most practical bridge between both is APX skill installation.&lt;/p&gt;

&lt;p&gt;That sounds small, but it solves a real adoption problem.&lt;/p&gt;

&lt;p&gt;A protocol can be clean and still be ignored. If a tool does not know how to read &lt;code&gt;.apc/&lt;/code&gt;, it will keep inventing its own local habits. One runtime may look at &lt;code&gt;AGENTS.md&lt;/code&gt;. Another may ignore it. A third may store sessions in a vendor-specific cache and never touch the repo at all. APC only wins when the runtime learns to treat the repository contract as the source of truth.&lt;/p&gt;

&lt;p&gt;That is where APX matters.&lt;/p&gt;

&lt;p&gt;APX is not trying to replace APC. It is the layer that teaches compatible runtimes how to use APC correctly. The APX docs are explicit: it installs APC-aware skills into runtimes like Claude Code and Codex, so they know how to read &lt;code&gt;.apc/&lt;/code&gt;, which agents exist, and which skills apply. In other words, APX turns a file convention into behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why skills matter
&lt;/h2&gt;

&lt;p&gt;A skill is more than a prompt snippet. In this stack, it is the smallest useful unit of operational knowledge.&lt;/p&gt;

&lt;p&gt;Without skills, a runtime has to rediscover the project on every turn. It may still work, but it will work inconsistently. With skills, the runtime gets a stable local rule set:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;read the root contract first&lt;/li&gt;
&lt;li&gt;respect the agent layout in &lt;code&gt;.apc/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;keep runtime state outside the repo&lt;/li&gt;
&lt;li&gt;treat curated memory as project knowledge, not transcript dumps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That makes APC portable in practice, not just in theory.&lt;/p&gt;

&lt;p&gt;A good test is simple: if a new compatible tool can open the repo and immediately understand where project rules live, where durable memory lives, and where raw runtime state should stay, APC is doing its job. APX skills are what make that possible before every vendor ships native APC support.&lt;/p&gt;

&lt;h2&gt;
  
  
  The adoption loop
&lt;/h2&gt;

&lt;p&gt;The flow is straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The repo carries APC files such as &lt;code&gt;AGENTS.md&lt;/code&gt;, &lt;code&gt;.apc/project.json&lt;/code&gt;, and curated agent memory.&lt;/li&gt;
&lt;li&gt;APX installs skills into the local runtime.&lt;/li&gt;
&lt;li&gt;The runtime reads the APC contract the same way every time.&lt;/li&gt;
&lt;li&gt;Runtime state stays in &lt;code&gt;~/.apx/&lt;/code&gt;, not inside the repo.&lt;/li&gt;
&lt;li&gt;The project stays portable across tools and machines.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That loop matters because it keeps the repo and the runtime in their proper roles.&lt;/p&gt;

&lt;p&gt;APC says what the project is.&lt;/p&gt;

&lt;p&gt;APX says how to work with it today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Concrete example
&lt;/h2&gt;

&lt;p&gt;Imagine a repo with one agent for reviews and one for implementation. The APC side can define the agent files and memory. The APX side can install the skills that teach a compatible runtime to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;discover the project root&lt;/li&gt;
&lt;li&gt;load the correct agent context&lt;/li&gt;
&lt;li&gt;use local runtime storage for sessions and messages&lt;/li&gt;
&lt;li&gt;avoid treating transient output as committed project knowledge&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is not just nicer ergonomics. It is less drift.&lt;/p&gt;

&lt;p&gt;If the runtime knows the contract, the same repo behaves the same way across tools. That is a stronger guarantee than hoping every tool author independently recreates the same folder rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  The deeper reason
&lt;/h2&gt;

&lt;p&gt;APC is not a dashboard feature. It is a protocol for project meaning.&lt;/p&gt;

&lt;p&gt;APX is not just a CLI wrapper. It is the adoption layer that makes the protocol real on day one.&lt;/p&gt;

&lt;p&gt;That is why the two projects belong together but do not overlap:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APC stays durable, portable, and repo-owned.&lt;/li&gt;
&lt;li&gt;APX stays local, operational, and runtime-owned.&lt;/li&gt;
&lt;li&gt;Skills are the glue that lets the runtime respect the contract.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want the short version: APC defines the contract, APX teaches the runtime to obey it.&lt;/p&gt;

&lt;p&gt;That is the useful path from spec to daily use.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
