Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
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
27 changes: 25 additions & 2 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,29 @@
"homepage": "https://docs.base44.com",
"repository": "https://github.com/base44/skills",
"license": "MIT",
"keywords": ["base44", "full-stack", "sdk", "cli", "deployment", "entities", "backend-functions", "javascript", "typescript"],
"skills": ["./skills/base44-cli/", "./skills/base44-sdk/", "./skills/base44-troubleshooter/"]
"keywords": [
"base44",
"full-stack",
"sdk",
"cli",
"deployment",
"entities",
"backend-functions",
"javascript",
"typescript"
],
"skills": [
"./skills/base44-cli/",
"./skills/base44-sdk/",
"./skills/base44-troubleshooter/",
"./skills/base44-platform-platform/",
"./skills/base44-platform-entities/",
"./skills/base44-platform-backend-functions/",
"./skills/base44-platform-workflows/",
"./skills/base44-platform-agents/",
"./skills/base44-platform-actors/",
"./skills/base44-platform-integrations-sdk/",
"./skills/base44-platform-connectors/",
"./skills/base44-platform-frontend/"
]
}
34 changes: 28 additions & 6 deletions .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,36 @@
"version": "1.0.0-beta.1",
"description": "Build and deploy Base44 full-stack apps with CLI project management and JavaScript/TypeScript SDK development skills",
"author": {
"name": "base44",
"url": "https://base44.com"
"name": "base44",
"url": "https://base44.com"
},
"homepage": "https://docs.base44.com",
"repository": "https://github.com/base44/skills",
"license": "MIT",
"logo": "./assets/base44-logo.png",
"keywords": ["base44", "full-stack", "sdk", "cli", "deployment", "entities", "backend-functions", "javascript", "typescript"],
"skills": ["./skills/base44-cli/", "./skills/base44-sdk/", "./skills/base44-troubleshooter/"]
}

"keywords": [
"base44",
"full-stack",
"sdk",
"cli",
"deployment",
"entities",
"backend-functions",
"javascript",
"typescript"
],
"skills": [
"./skills/base44-cli/",
"./skills/base44-sdk/",
"./skills/base44-troubleshooter/",
"./skills/base44-platform-platform/",
"./skills/base44-platform-entities/",
"./skills/base44-platform-backend-functions/",
"./skills/base44-platform-workflows/",
"./skills/base44-platform-agents/",
"./skills/base44-platform-actors/",
"./skills/base44-platform-integrations-sdk/",
"./skills/base44-platform-connectors/",
"./skills/base44-platform-frontend/"
]
}
9 changes: 9 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# The compiled platform skills are generated from the Base44 builder's prompt tree in
# the Base44 builder prompt and synced here by Base44 (CONTRIBUTING.md, "Compiled platform skills").
# A hand edit here is overwritten by the next sync and fails the validator's manifest check,
# so the owners review the sync PRs and route content changes to the source prompt.
/skills/base44-platform-*/ @base44/devs
/SOURCE_COMMIT @base44/devs
/scripts/validate-base44-platform.mjs @base44/devs
/.github/workflows/validate-base44-platform.yml @base44/devs
/.github/workflows/auto-merge-skill-update.yml @base44/devs
45 changes: 45 additions & 0 deletions .github/workflows/auto-merge-skill-update.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Auto-merge compiled skill updates

# A sync PR from the Base44 skills compiler (label `auto-skill-update`, opened by the
# base44-github-actions app, the same bot sync-cli-skill.yml / sync-sdk-skill.yml trust) that
# touches only the compiled `skills/base44-platform-*` tree and the SOURCE_COMMIT pin is merged
# automatically once `Validate base44-platform skills` passes. Anything else with the label (the
# CLI / SDK sync PRs, a hand-made PR) is left for a human.
# A sync PR labelled `human-merge` was published on a person's approval after an IP review
# finding: it is left for a human too, even when a later push updates it.
#
# Requires: GitHub auto-merge enabled on this repository and the validator as a required check
# on main. See CONTRIBUTING.md, "Compiled platform skills".

on:
pull_request:
types: [labeled, synchronize, reopened]

permissions:
contents: write
pull-requests: write

jobs:
enable-auto-merge:
if: contains(github.event.pull_request.labels.*.name, 'auto-skill-update') && !contains(github.event.pull_request.labels.*.name, 'human-merge') && github.event.pull_request.user.login == 'base44-github-actions[bot]'
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
fetch-depth: 0
- name: Only the compiled tree and the pin may change
env:
BASE: ${{ github.event.pull_request.base.sha }}
HEAD: ${{ github.event.pull_request.head.sha }}
run: |
set -euo pipefail
git diff --name-only "$BASE" "$HEAD" > changed.txt
if grep -vE '^(skills/base44-platform-[^/]+/|SOURCE_COMMIT$)' changed.txt; then
echo "::error::the PR changes files outside the compiled tree; leaving it for a human"; exit 1
fi
echo "$(wc -l < changed.txt) generated files changed"
- name: Enable auto-merge
env:
GH_TOKEN: ${{ github.token }}
run: gh pr merge "${{ github.event.pull_request.number }}" --squash --auto
5 changes: 3 additions & 2 deletions .github/workflows/notify-slack-skill-sync.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
name: Notify Slack on skill-sync PRs

# When an auto-generated base44-cli / base44-sdk skill-sync PR opens, post a
# When an auto-generated skill-sync PR opens (base44-cli / base44-sdk, or the nightly
# base44-platform-* tree compiled from the Base44 builder prompt), post a
# message to the team Slack channel so someone remembers to review it. Fires
# only for skill-update PRs; anything else is ignored.
#
# Discriminator: the `auto-skill-update` label. The sync workflows
# (sync-cli-skill.yml / sync-sdk-skill.yml) create their PRs with this label,
# (sync-cli-skill.yml / sync-sdk-skill.yml here, the platform-skills sync at Base44) create their PRs with this label,
# so it is present in the `opened` event payload. This is a stable, explicit
# contract — independent of the PR title wording or which bot authored it.
#
Expand Down
28 changes: 28 additions & 0 deletions .github/workflows/validate-base44-platform.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Validate base44-platform skills

# The `skills/base44-platform-*` tree is compiled from the Base44 builder prompt
# and synced here nightly. This check proves a PR carries exactly what the compiler emitted:
# headers, manifest hashes, frontmatter, links and the SOURCE_COMMIT pin. Make it a required check
# on main, so the auto-merge workflow only merges a tree that passed it.

on:
pull_request:
paths:
- "skills/base44-platform-*/**"
- "SOURCE_COMMIT"
- "scripts/validate-base44-platform.mjs"
- ".github/workflows/validate-base44-platform.yml"

permissions:
contents: read

jobs:
validate:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
- uses: actions/setup-node@v6
with:
node-version: '24'
- run: node scripts/validate-base44-platform.mjs
51 changes: 51 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,57 @@ npx skills add . --skill your-skill-name -a cursor
- Prefer modern JavaScript/TypeScript syntax
- Follow Base44 SDK conventions

## Compiled platform skills (`base44-platform-*`)

The `skills/base44-platform-*` directories are **generated**. Their source is the Base44 builder's
own system prompt, rendered for an external coding agent by Base44's internal compiler and
published here by a sync workflow that Base44 runs by hand. They describe the platform exactly as
the in-editor AI learns it, one reference per app shape.

### How the pipeline works

1. **At Base44**: the compiler renders every prompt partial in its capability matrix for the
external surface, drops passages marked internal, and validates the result (deterministic output,
no builder-tool vocabulary, no internal names, manifest, links). An IP review then reads the tree
that would be published; a tree it flags stays inside Base44 until an engineer has read the
findings and approved it. The sync opens one PR here on the branch `auto/base44-platform-skills`,
labeled `auto-skill-update`, with the review's report in its body. No change, no PR.
2. **In this repo**: `Validate base44-platform skills` (`scripts/validate-base44-platform.mjs`)
checks that the PR carries exactly what the compiler emitted: the generated-file header on every
file, sha256 hashes matching `skills/base44-platform-manifest.json`, frontmatter whose `name`
equals the directory name, resolving links, and a 40-hex `SOURCE_COMMIT` pin.
3. `Auto-merge compiled skill updates` enables squash auto-merge on a labeled PR opened by
`base44-github-actions[bot]` whose diff is confined to `skills/base44-platform-*/**` and
`SOURCE_COMMIT`. A PR published on an engineer's approval after review findings waits for a
human merge; so does everything else (it carries the `human-merge` label, which the job skips). The Slack notifier posts the PR like any other skill-sync PR.

### How to change a compiled skill

Do not edit these files here: the validator fails on a hand edit, and the next sync overwrites it.
Open an issue describing the wrong or missing content, or, as a Base44 engineer, change the source
prompt: wording wrong for every agent is fixed in the shared partial; wording only an external agent
needs goes in the partial's external branch; a new capability, app shape or reference is added to the
matrix; a passage that must not be public is marked internal. The next sync carries it here.

`SOURCE_COMMIT` names the source commit the current tree was compiled from.

### Which reference an agent should read

Each `base44-platform-*` skill's `SKILL.md` routes by app profile (Vite SPA, TanStack Start, native
mobile). The platform answers that question directly:
`GET /api/apps/{app_id}/agent-profile` (public API, also reachable through the Base44 MCP
`execute_api` tool) returns the app's shape, the workspace's entitlements and the exact reference
paths to read.

### Operating the pipeline (maintainers)

- The sync PR is opened by the `base44-github-actions` GitHub App, the same app the CLI and SDK
release workflows use to dispatch here.
- Auto-merge must be enabled in the repository settings, with `Validate base44-platform skills` as
a required check on `main`.
- `.github/CODEOWNERS` routes the generated tree and the two workflows to the owning team.
- Syncs are manual and run from Base44's side; there is no schedule in this repo.

## Questions?

- Check existing skills for examples
Expand Down
15 changes: 14 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,22 @@ npx skills add base44/skills --skill base44-remote-dev --skill base44-sandbox --
|-------|-------------|
| [`base44-cli`](skills/base44-cli/SKILL.md) | Create and manage Base44 projects using the CLI. Handles resource configuration (entities, backend functions, realtime actors, AI agents), initialization, and deployment. |
| [`base44-sdk`](skills/base44-sdk/SKILL.md) | Build apps using the Base44 JavaScript SDK. Communicate with remote resources like entities, backend functions, realtime actors, and AI agents. |
| [`base44-troubleshooter`](skills/base44-troubleshooter/SKILL.md) | Troubleshoot production issues using backend function logs. Use when investigating app errors or diagnosing production problems. |
| [`base44-troubleshooter`](skills/base44-troubleshooter/SKILL.md) | Troubleshoot production issues using backend function logs and workflow run history. Use when investigating app errors or diagnosing failed scheduled jobs. |
| [`base44-remote-dev`](skills/base44-remote-dev/SKILL.md) | Develop a Base44 app remotely from your own coding agent by connecting it to the Base44 sandbox over MCP or the `base44 sandbox` CLI. |
| [`base44-sandbox`](skills/base44-sandbox/SKILL.md) | Author Base44 app code inside the cloud sandbox — no deploy/push; writing a resource file (function, actor, entity, agent) into the sandbox is what ships it. |
| [`base44-platform-platform`](skills/base44-platform-platform/SKILL.md) | Platform concepts for a Base44 app: entities, functions or server code, workflows, file structure, authentication and user invites, per app type. Compiled from the Base44 builder's own prompt. |
| [`base44-platform-entities`](skills/base44-platform-entities/SKILL.md) | Entity schemas, the entity SDK and row-level security rules, as the Base44 builder teaches them. Compiled from the Base44 builder's own prompt. |
| [`base44-platform-backend-functions`](skills/base44-platform-backend-functions/SKILL.md) | Backend functions on Cloudflare (or TanStack Start server code): secrets, the SDK on the server, auth, webhooks, testing, the InvokeLLM model table. Compiled from the Base44 builder's own prompt. |
| [`base44-platform-workflows`](skills/base44-platform-workflows/SKILL.md) | Workflows: trigger-driven `.jsonc` processes under `base44/workflows/` with the full authoring guide, plus the legacy automations pipeline. Compiled from the Base44 builder's own prompt. |
| [`base44-platform-agents`](skills/base44-platform-agents/SKILL.md) | In-app AI agents: config files, tool permissions, channels, the agents SDK and code agents on the AI gateway. Compiled from the Base44 builder's own prompt. |
| [`base44-platform-actors`](skills/base44-platform-actors/SKILL.md) | Realtime actors: stateful WebSocket rooms for multiplayer, presence, collaborative boards and chat. Compiled from the Base44 builder's own prompt. |
| [`base44-platform-integrations-sdk`](skills/base44-platform-integrations-sdk/SKILL.md) | Built-in integrations (InvokeLLM, SendEmail, file uploads, data extraction) with every Core endpoint schema, plus analytics. Compiled from the Base44 builder's own prompt. |
| [`base44-platform-connectors`](skills/base44-platform-connectors/SKILL.md) | App connectors: OAuth integrations in shared, app-user and BYO-shared modes, and how server code reads their tokens. Compiled from the Base44 builder's own prompt. |
| [`base44-platform-frontend`](skills/base44-platform-frontend/SKILL.md) | Frontend coding standards: conventions, installed packages, routing, Tailwind and design tokens, npm installs, per framework. Compiled from the Base44 builder's own prompt. |

### Platform skills (compiled)

The `base44-platform-*` skills are generated from the Base44 builder's own system prompt and synced here by Base44, so they describe the platform exactly as the in-editor AI learns it: one reference per app shape (Vite SPA, TanStack Start, native mobile). Ask the platform which shape an app is with `GET /api/apps/{app_id}/agent-profile` (also reachable through the Base44 MCP `execute_api` tool); it returns the exact reference files to read. Do not edit these files by hand: the `SOURCE_COMMIT` file records the source commit they were compiled from, and the next sync overwrites them. How the pipeline works and how to change the content: [CONTRIBUTING.md](CONTRIBUTING.md#compiled-platform-skills-base44-platform-).

## About Agent Skills

Expand Down
1 change: 1 addition & 0 deletions SOURCE_COMMIT
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
025f298e0d9c239575381d939a226ed1cf47bfea
25 changes: 23 additions & 2 deletions plugins/base44-sandbox/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,27 @@
"homepage": "https://docs.base44.com",
"repository": "https://github.com/base44/skills",
"license": "MIT",
"keywords": ["base44", "sandbox", "remote-dev", "mcp", "entities", "backend-functions"],
"skills": ["./skills/base44-remote-dev/", "./skills/base44-sandbox/", "./skills/base44-sdk/", "./skills/base44-troubleshooter/"]
"keywords": [
"base44",
"sandbox",
"remote-dev",
"mcp",
"entities",
"backend-functions"
],
"skills": [
"./skills/base44-remote-dev/",
"./skills/base44-sandbox/",
"./skills/base44-sdk/",
"./skills/base44-troubleshooter/",
"./skills/base44-platform-platform/",
"./skills/base44-platform-entities/",
"./skills/base44-platform-backend-functions/",
"./skills/base44-platform-workflows/",
"./skills/base44-platform-agents/",
"./skills/base44-platform-actors/",
"./skills/base44-platform-integrations-sdk/",
"./skills/base44-platform-connectors/",
"./skills/base44-platform-frontend/"
]
}
31 changes: 28 additions & 3 deletions plugins/base44-sandbox/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,40 @@
"homepage": "https://docs.base44.com",
"repository": "https://github.com/base44/skills",
"license": "MIT",
"keywords": ["base44", "sandbox", "remote-dev", "mcp", "entities", "backend-functions"],
"skills": ["./skills/base44-remote-dev/", "./skills/base44-sandbox/", "./skills/base44-sdk/", "./skills/base44-troubleshooter/"],
"keywords": [
"base44",
"sandbox",
"remote-dev",
"mcp",
"entities",
"backend-functions"
],
"skills": [
"./skills/base44-remote-dev/",
"./skills/base44-sandbox/",
"./skills/base44-sdk/",
"./skills/base44-troubleshooter/",
"./skills/base44-platform-platform/",
"./skills/base44-platform-entities/",
"./skills/base44-platform-backend-functions/",
"./skills/base44-platform-workflows/",
"./skills/base44-platform-agents/",
"./skills/base44-platform-actors/",
"./skills/base44-platform-integrations-sdk/",
"./skills/base44-platform-connectors/",
"./skills/base44-platform-frontend/"
],
"interface": {
"displayName": "Base44 Sandbox",
"shortDescription": "Develop Base44 apps remotely in the cloud sandbox from Codex",
"longDescription": "Develop a Base44 app inside Base44's cloud sandbox where the platform auto-builds, auto-commits, and auto-syncs. Includes conventions for entities, functions, agents, and connectors, SDK development, and production troubleshooting — without deploy/push commands.",
"developerName": "base44",
"category": "Coding",
"capabilities": ["Interactive", "Read", "Write"],
"capabilities": [
"Interactive",
"Read",
"Write"
],
"websiteURL": "https://base44.com",
"logo": "./assets/base44-logo.png"
}
Expand Down
31 changes: 26 additions & 5 deletions plugins/base44-sandbox/.cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,34 @@
"version": "1.0.0-beta.1",
"description": "Develop a Base44 app remotely in Base44's cloud sandbox; conventions only, no deploy/push.",
"author": {
"name": "base44",
"url": "https://base44.com"
"name": "base44",
"url": "https://base44.com"
},
"homepage": "https://docs.base44.com",
"repository": "https://github.com/base44/skills",
"license": "MIT",
"logo": "./assets/base44-logo.png",
"keywords": ["base44", "sandbox", "remote-dev", "mcp", "entities", "backend-functions"],
"skills": ["./skills/base44-remote-dev/", "./skills/base44-sandbox/", "./skills/base44-sdk/", "./skills/base44-troubleshooter/"]
}
"keywords": [
"base44",
"sandbox",
"remote-dev",
"mcp",
"entities",
"backend-functions"
],
"skills": [
"./skills/base44-remote-dev/",
"./skills/base44-sandbox/",
"./skills/base44-sdk/",
"./skills/base44-troubleshooter/",
"./skills/base44-platform-platform/",
"./skills/base44-platform-entities/",
"./skills/base44-platform-backend-functions/",
"./skills/base44-platform-workflows/",
"./skills/base44-platform-agents/",
"./skills/base44-platform-actors/",
"./skills/base44-platform-integrations-sdk/",
"./skills/base44-platform-connectors/",
"./skills/base44-platform-frontend/"
]
}
Loading
Loading