YouBothAgent▾
You — Business rules and flows you own. Read these yourself.
Both — Know the idea; your agent follows the details.
Agent — Conventions and references your agent follows. Look up as needed.



CLI Reference▾
AkanJS Reference▾akan quality tells you the shape of the codebase is drifting: none of it is a syntax error, and none of it shows until someone measures.akan.file.recommended-max-linesorder.service.ts next to OrderService.akan.convention.serviceakan.ssr.module-missing-server-viewakan.ssr.client-static-markup.tsx file. The render share is the one number a UI change can quietly lower.akan.<scope>.<name>; every warning names the rule that raised it.ui/ and lib/, the percentage that renders on the server.scan (default) prints every warning, then the SSR balance and the suggested rules.ssr prints the SSR balance first, then only the warnings whose scope is ssr.scan covers everything, ssr the render balance alone.-f; json prints the whole result for tools, each warning's fix included.package.json, tsconfig.json and .env..ts and .tsx under apps/ and libs/ except .d.ts, plus every *.abstract.md..gitignore, plus node_modules and .git.akan quality run covers both. A shortened run looks like this:<file>:<line>:1 - warning <rule>: <message>. A global warning has no single file, so it prints <global> instead.note: related location lists each place involved, and fix: says what to change.akan quality ssr prints it first and keeps only the ssr warnings..service.ts.//! markers.akan quality ssr keeps.akan quality ssr --format json has the same shape, with warnings narrowed to scope ssr.rule, scope, severity, message and fix, plus file, line and locations when known.scope, serverMass, clientMass, serverShare (0 to 1).st.do.set…On…, so that field publishes no agent tool.*.abstract.md is over 300 lines; keep only what the code cannot show.<Class>Options.<X>Props.//! or /*! marker in browser code, which survives minification; write // FIXME:.index.ts exports a scaffold placeholder such as aa, dumb or someCommonLogic.Order description.declare global, a Window interface or a .prototype. write; isolate it in one low-level file.lib/ other than cnst.ts, option.ts and the other support files..tsx in a module folder whose name is not an allowed role, such as OrderCard.tsx.akan.convention.<role> fires on any top-level declaration outside this list. Shown for a model named Order:OrderInput, OrderObject, LightOrder, Order, OrderInsight, and enumOf classesexport const dictionaryOrderFilter, Order, OrderModelOrderServiceOrderInternal, OrderSlice, OrderEndpointOrderStoreui/ and page/, and module files, may reuse a name. An enumOf class in a .constant.ts may not."use client" counts as client; all others count as server.workspace total when there are two or more.<- below the 50% target.akan quality ssr prints the share first, then only the ssr warnings:

ui/ and lib/ are measured. The share and the six rules read .tsx files under apps|libs/*/ui/ and apps|libs/*/lib/, minus tests. page/, webkit/, srvkit/ and common/ are left out, so a route file never moves the number, and neither does a "use client" added there."use client" but no hook, event handler, store or browser API; delete it.useEffect(…, []) calls fetch.* or a loading st.do.* action; the route could load it first.Unit or View..Template.tsx calls useState, but a Template keeps its form state in the store.st or fetch is never told to drop "use client", and a component that renders a package's component is skipped.Zone, Template and Util, and an index_.tsx lazy() boundary, are never an unnecessary "use client".onClick, or an effect with dependencies, is not a mount-time load._ under lib/ are never asked for a Unit or View.