Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ the CLI fallback, then continue the same workflow check with `--ran-suggest`.

## Public truth

<!-- truth:readme-proof-line:start -->v0.4.30 · 36 MCP tools + 5 prompts · 214 diagnostic codes · 1350 tests · 58 live packages · 34 bundled templates<!-- truth:readme-proof-line:end -->
<!-- truth:readme-proof-line:start -->v0.4.30 · 36 MCP tools + 5 prompts · 214 diagnostic codes · 1362 tests · 58 live packages · 39 bundled templates<!-- truth:readme-proof-line:end -->

<!-- truth:readme-truth-source:start -->Public proof is generated from `../public-truth/public-truth.json` via `npm --prefix .. run truth:sync`.<!-- truth:readme-truth-source:end -->

Expand Down
10 changes: 6 additions & 4 deletions ROADMAP.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
# Axint Roadmap

_Last updated: May 2026 · Current release: [v0.4.28](https://github.com/agenticempire/axint/releases/tag/v0.4.28)_
_Last updated: June 2026 · Current release: <!-- metrics:roadmap-release:start -->[v0.4.30](https://github.com/agenticempire/axint/releases/tag/v0.4.30)<!-- metrics:roadmap-release:end -->_

Axint is the Apple-native execution layer for AI coding agents. The open-source package gives agents a smaller contract for Apple surfaces, emits ordinary Swift, validates Apple-specific rules, writes Fix Packets, and coordinates proof loops across CLI, MCP, Xcode, Registry, and Cloud-facing workflows.

The thesis is simple: agents can write code, but Apple-native software needs proof. Axint turns agent output into validated, repairable, inspectable Apple work.

<!-- metrics:roadmap-snapshot:start -->Current compiler snapshot: v0.4.30 · 36 MCP tools + 5 prompts · 39 templates · 214 diagnostic codes · 1362 tests.<!-- metrics:roadmap-snapshot:end -->

---

## Shipped Now
Expand All @@ -22,8 +24,8 @@ The thesis is simple: agents can write code, but Apple-native software needs pro

- TypeScript, Python, JSON schema mode, and preview `.axint` inputs compile into Apple-native Swift.
- Supported surfaces include App Intents, SwiftUI views, WidgetKit widgets, app scaffolds, plist fragments, entitlements, and Apple metadata.
- The validator covers 204 diagnostic codes across compiler, intent, view, widget, app, Swift build, SwiftUI, accessibility, concurrency, and Live Activity rules.
- The suite currently tracks 1319 tests across TypeScript and Python paths.
- The validator covers 214 diagnostic codes across compiler, intent, view, widget, app, Swift build, SwiftUI, accessibility, concurrency, and Live Activity rules.
- The suite currently tracks 1362 tests across TypeScript and Python paths.

### Agent distribution

Expand All @@ -35,7 +37,7 @@ The thesis is simple: agents can write code, but Apple-native software needs pro
### First-use and templates

- `create-axint-app` / `axint create` generates the Apple Day Agent starter: multiple App Intent contracts, generated Swift, plist and entitlement fragments, agent prompts, proof artifacts, and an interactive local proof preview.
- 26 bundled templates and 58 live Registry packages give agents reusable starting points instead of asking them to hallucinate every Apple surface from scratch.
- 39 bundled templates and 58 live Registry packages give agents reusable starting points instead of asking them to hallucinate every Apple surface from scratch.

### Privacy-safe learning and adoption proof

Expand Down
2 changes: 1 addition & 1 deletion extensions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Pre-built integrations for every major AI coding tool. Each directory contains t
| **Cursor** | Copy `cursor/mcp.json` → `.cursor/mcp.json` or search in Settings → Tools → MCP |
| **Windsurf** | Copy `windsurf/mcp_config.json` → `~/.codeium/windsurf/mcp_config.json` |
| **Codex** | Copy `codex/mcp.json` into your Codex MCP config |
| **Xcode** | Add SPM dependency (see `xcode/README.md`) |
| **Xcode** | Use the Xcode 27 agent plugin or add the SPM dependency (see `xcode/README.md`) |
| **JetBrains** | Settings → Tools → AI Assistant → MCP Servers (see `jetbrains/README.md`) |
| **Zed** | Add to `~/.config/zed/settings.json` (see `zed/README.md`) |
| **Neovim** | Configure your MCP plugin (see `neovim/README.md`) |
Expand Down
22 changes: 21 additions & 1 deletion extensions/xcode/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Axint for Xcode

Axint integrates with Xcode in four ways: as an MCP server for agentic coding, as an SPM build plugin for compile-time generation, as a [native Source Editor Extension](./source-editor-extension) for in-editor quickfixes, and via the `axint xcode setup` command for one-step configuration.
Axint integrates with Xcode in five ways: as an Xcode 27 agent plugin, as an MCP server for agentic coding, as an SPM build plugin for compile-time generation, as a [native Source Editor Extension](./source-editor-extension) for in-editor quickfixes, and via the `axint xcode setup` command for one-step configuration.

## Quick Setup (recommended)

Expand All @@ -27,6 +27,26 @@ What MCP servers are available?

You should see both `xcode-tools` and `axint`.

## Xcode 27 Agent Plugin

Xcode 27 can load agent plugins that bundle skills, MCP servers, and tool metadata. Axint ships a public plugin package at [`agent-plugin/plugin.json`](./agent-plugin/plugin.json) so Xcode agents can discover the Axint MCP server with branded tool names and an Apple Intelligence proof skill.

The plugin points Xcode at the npm package:

```json
{
"mcpServers": {
"axint": {
"type": "stdio",
"command": "npx",
"args": ["-y", "-p", "@axint/compiler", "axint-mcp"]
}
}
}
```

Use the bundled `apple-intelligence-proof` skill when building App Intents schemas, Foundation Models features, previews, localization flows, or any Xcode 27 Apple Intelligence surface. It requires `axint.swift.validate`, `axint.cloud.check`, AppIntentsTesting proof for schema-backed App Intents, and focused Xcode build/test evidence before the agent can call a feature demo-ready.

## MCP for Xcode Agentic Coding

Xcode 26.3+ supports agentic coding with external agents via MCP. Axint adds specialized Apple-native feature generation on top of Xcode's built-in workspace/build/test tools.
Expand Down
4 changes: 4 additions & 0 deletions extensions/xcode/agent-plugin/icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
37 changes: 37 additions & 0 deletions extensions/xcode/agent-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"name": "Axint",
"description": "Apple Intelligence proof layer for Xcode agents: compile, validate, repair, and prove App Intents, Foundation Models, previews, localization, and Xcode build loops.",
"version": "0.4.30",
"homepage": "https://axint.ai",
"repository": "https://github.com/agenticempire/axint",
"license": "Apache-2.0",
"mcpServers": {
"axint": {
"type": "stdio",
"command": "npx",
"args": ["-y", "-p", "@axint/compiler", "axint-mcp"],
"tools": ["*"],
"_meta": {
"ideToolIconPath": "./icon.svg",
"ideToolIconRendersAsTemplate": true,
"ideToolTitles": {
"axint.status": "Axint Status",
"axint.suggest": "Apple Feature Plan",
"axint.feature": "Generate Apple Feature",
"axint.swift.validate": "Swift Validator",
"axint.cloud.check": "Apple Readiness Check",
"axint.repair": "Apple Repair Plan",
"axint.run": "Build Proof Loop",
"axint.xcode.guard": "Axint Guard",
"axint.xcode.write": "Guarded Swift Write"
}
}
}
},
"skills": [
{
"name": "apple-intelligence-proof",
"path": "./skills/apple-intelligence-proof.md"
}
]
}
19 changes: 19 additions & 0 deletions extensions/xcode/agent-plugin/skills/apple-intelligence-proof.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Apple Intelligence Proof

Use Axint before and after every Apple Intelligence or App Intents edit in Xcode.

## Required Loop

1. Start with `axint.status`, then `axint.session.start` for the project.
2. For new App Intents, entities, enums, Foundation Models, previews, or localization flows, call `axint.suggest` or `axint.feature` before writing code.
3. After edits, run `axint.swift.validate` on changed Swift files.
4. Run `axint.cloud.check` with Xcode 27 build/test evidence.
5. For schema-backed App Intents, attach AppIntentsTesting proof for Siri, Shortcuts, and Spotlight pathways.
6. Before claiming the task is fixed, run `axint.run` or focused `xcodebuild` proof and summarize the exact command output.

## Guardrails

- Do not call generated Apple Intelligence code demo-ready from static checks alone.
- Do not invent App Schema, Foundation Models, or AppIntentsTesting APIs.
- If Xcode 27 beta is installed outside the selected developer directory, set `DEVELOPER_DIR` before build/test proof.
- Keep source, prompts, and user content out of public reports unless the user explicitly opts in.
4 changes: 2 additions & 2 deletions metrics.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
"axint.create-widget",
"axint.create-intent"
],
"bundledTemplates": 34,
"bundledTemplates": 39,
"diagnostics": 214,
"xcodeFixRules": 33,
"xcodeFixRuleCodes": [
Expand Down Expand Up @@ -86,7 +86,7 @@
"AX748"
],
"tests": {
"typescript": 1236,
"typescript": 1248,
"python": 114
},
"registryPackages": 58,
Expand Down
185 changes: 184 additions & 1 deletion src/cloud/check.ts
Original file line number Diff line number Diff line change
Expand Up @@ -496,6 +496,18 @@ export function runCloudCheck(input: CloudCheckInput): CloudCheckReport {
: []),
]
) satisfies CloudCheckReport["checks"];
const wwdc26Diagnostics = diagnostics.filter((diagnostic) =>
diagnostic.code.startsWith("AXCLOUD-WWDC26-")
);
if (wwdc26Diagnostics.length > 0) {
checks.push({
label: "Xcode 27 readiness",
state: wwdc26Diagnostics.some((diagnostic) => diagnostic.severity === "error")
? "fail"
: "warn",
detail: `${wwdc26Diagnostics.length} WWDC26 proof requirement${wwdc26Diagnostics.length === 1 ? "" : "s"} need evidence before this is demo-ready.`,
});
}
if (projectContext) {
checks.push({
label: "Project context pack",
Expand Down Expand Up @@ -1204,6 +1216,29 @@ function diagnosticsFromWwdc26Readiness(
): Diagnostic[] {
const diagnostics: Diagnostic[] = [];
const lower = source.toLowerCase();
const touchesEvaluationProof =
/\b[A-Za-z_][A-Za-z0-9_]*Evaluations\b/.test(source) ||
/\b(static\s+let\s+scenarios|static\s+let\s+criteria|Evaluation\s+suite)\b/i.test(
source
);
const touchesPreviewSnapshotProof =
/\bPreview Snapshot proof matrix\b/i.test(source) ||
/\bpreviewProof\b/.test(source) ||
/\bXcode Preview Snapshot proof\b/i.test(source);
const touchesVisualIntelligence =
/\b(VisualIntelligence|VisionKit|visual-intelligence|visual intelligence)\b/i.test(
source
);
const touchesImagePlayground =
/\b(ImagePlayground|Image Playground|generated image)\b/i.test(source);
const touchesStringCatalog =
/\b(StringCatalog|String Catalog|Localizable\.xcstrings|\.xcstrings|generated translations?)\b/i.test(
source
);
const touchesResizableIosLayout =
/\bSwiftUI\b/.test(source) &&
/\bView\b/.test(source) &&
/\.frame\s*\([^)]*\b(width|height)\s*:\s*\d{3,}/.test(source);
const touchesAppleIntelligence =
/@App(Intent|Entity|Enum)\(schema:/.test(source) ||
/\b(AppSchema|SyncableEntity|OwnershipProvidingEntity|IndexedEntityQuery|IntentValueQuery|FoundationModels|LanguageModelSession|SystemLanguageModel|PrivateCloudComputeLanguageModel|GenerationSchema|ToolCallingMode)\b/.test(
Expand All @@ -1212,10 +1247,56 @@ function diagnosticsFromWwdc26Readiness(
/@(?:Generable|UnionValue)\b/.test(source) ||
/\b(LongRunningIntent|ProgressReportingIntent|SnippetIntent|ShowsSnippetIntent|ShowsSnippetView|ResultsCollection|IntentItemCollection|AppUnionValue|AppUnionValueCasesProviding)\b/.test(
source
);
) ||
touchesEvaluationProof ||
touchesPreviewSnapshotProof ||
touchesVisualIntelligence ||
touchesImagePlayground ||
touchesStringCatalog ||
touchesResizableIosLayout;

if (!touchesAppleIntelligence) return diagnostics;

const touchesAppIntentSystemPath =
/@App(Intent|Entity|Enum)\(schema:/.test(source) ||
/\b(AppSchema|AssistantSchemaIntent|AssistantIntent|IndexedEntity|IndexedEntityQuery|AppShortcutsProvider)\b/.test(
source
);

if (
touchesAppIntentSystemPath &&
!/\b(xcode\s*27|ios\s*27|ipados\s*27|macos\s*27|visionos\s*27|sdk\s*27)\b/.test(
evidenceText
)
) {
diagnostics.push({
code: "AXCLOUD-WWDC26-XCODE27-PROOF",
severity: "warning",
file,
message:
"WWDC26 App Intents and Apple Intelligence surfaces need Xcode 27 / SDK 27 proof before they are demo-ready.",
suggestion:
"Attach Xcode 27 build/test evidence, or rerun the proof loop with DEVELOPER_DIR pointing at the Xcode 27 beta.",
});
}

if (
/@App(Intent|Entity|Enum)\(schema:/.test(source) &&
!/\b(appintentstesting|app\s*intents\s*testing|siri|shortcuts|spotlight)\b/.test(
evidenceText
)
) {
diagnostics.push({
code: "AXCLOUD-WWDC26-APPINTENTS-TESTING",
severity: "warning",
file,
message:
"Schema-backed App Intents need AppIntentsTesting proof through the same Siri, Shortcuts, and Spotlight pathways people will use.",
suggestion:
"Add an AppIntentsTesting test for the intent/entity/enum adoption, then attach the passing Xcode 27 test log to Cloud Check.",
});
}

if (
/@AppEntity\(schema:/.test(source) &&
!/\bSyncableEntity\b/.test(source) &&
Expand Down Expand Up @@ -1279,6 +1360,108 @@ function diagnosticsFromWwdc26Readiness(
});
}

if (
touchesEvaluationProof &&
!/\b(evaluation|evaluations|scenario|criteria|pass|passed|xcode\s*27|test succeeded|0 failures)\b/.test(
evidenceText
)
) {
diagnostics.push({
code: "AXCLOUD-WWDC26-EVALUATION-PROOF",
severity: "warning",
file,
message:
"Evaluation suites need attached scenario evidence before model-backed behavior is demo-ready.",
suggestion:
"Attach the passing evaluation run, Xcode 27 test log, or scenario/criteria proof that covers the generated suite.",
});
}

if (
touchesPreviewSnapshotProof &&
!/\b(preview snapshot|snapshot|baseline|variant|accessibility|xcode\s*27|test succeeded|0 failures)\b/.test(
evidenceText
)
) {
diagnostics.push({
code: "AXCLOUD-WWDC26-PREVIEW-SNAPSHOT-PROOF",
severity: "warning",
file,
message:
"Preview Snapshot proof matrices need attached rendered snapshot evidence before release.",
suggestion:
"Attach the Xcode 27 Preview Snapshot run or baseline artifact for each declared variant, including accessibility-size variants when listed.",
});
}

if (
touchesVisualIntelligence &&
!/\b(visual intelligence|visionkit|screenshot|camera|object|image understanding|xcode\s*27|test succeeded|0 failures)\b/.test(
evidenceText
)
) {
diagnostics.push({
code: "AXCLOUD-WWDC26-VISUAL-INTELLIGENCE-PROOF",
severity: "warning",
file,
message:
"Visual Intelligence routes need screenshot/object-understanding proof before they are demo-ready.",
suggestion:
"Attach the Xcode 27 run, screenshot fixture, or VisionKit/Visual Intelligence evidence showing the detected object maps to the intended app action.",
});
}

if (
touchesImagePlayground &&
!/\b(image playground|generated image|image generation|style|safety|private cloud compute|pcc|xcode\s*27|test succeeded|0 failures)\b/.test(
evidenceText
)
) {
diagnostics.push({
code: "AXCLOUD-WWDC26-IMAGE-PLAYGROUND-PROOF",
severity: "warning",
file,
message:
"Image Playground flows need generated-image proof before they are safe to present as working.",
suggestion:
"Attach the generated image artifact or Xcode 27 run evidence, including prompt/style notes and any safety or Private Cloud Compute constraints.",
});
}

if (
touchesStringCatalog &&
!/\b(string catalog|xcstrings|localization|localized|locale|translation|xliff|xcode\s*27|test succeeded|0 failures)\b/.test(
evidenceText
)
) {
diagnostics.push({
code: "AXCLOUD-WWDC26-STRING-CATALOG-PROOF",
severity: "warning",
file,
message: "String Catalog workflows need localization proof before release.",
suggestion:
"Attach the updated .xcstrings output, locale coverage, or Xcode 27 localization/export evidence for the generated strings.",
});
}

if (
touchesResizableIosLayout &&
!/\b(resizable|size class|compact|regular|dynamic type|accessibility|preview snapshot|baseline|xcode\s*27|test succeeded|0 failures)\b/.test(
evidenceText
)
) {
diagnostics.push({
code: "AXCLOUD-WWDC26-RESIZABLE-IOS-LAYOUT",
severity: "warning",
file,
line: findLine(source, ".frame"),
message:
"SwiftUI layouts with fixed large frame dimensions need resizable iOS proof.",
suggestion:
"Replace fixed device-sized frames with adaptive layout, or attach Preview Snapshot evidence across compact/regular, landscape, and accessibility-size variants.",
});
}

if (
/\bLongRunningIntent\b/.test(source) &&
!/\b(performBackgroundTask|LongRunningTaskOptions)\b/.test(
Expand Down
Loading