#82 by GitHub stars
nocobase/nocobase
NocoBase is the open-source platform for building, running, and evolving business systems with AI. Agents write the code and do the work, NocoBase provides the foundation and governance, and people make the decisions.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
packages/app/app-cli-client/tests/fixtures/packaged-cli/skills/nb-studio-cli/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/app/app-skills/skills/nocobase-app-development/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/app/app-skills/skills/nocobase-app-development/references/frontend/shadcn/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/app/app-skills/skills/nocobase-app-plugin-development/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/app/app-skills/skills/nocobase-app-upgrade/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/app/app-skills/skills/nocobase-deployment/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/examples/app-plugin-cli-example/skills/nocobase-app-plugin-cli-example/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/examples/app-plugin-repository-example/skills/nocobase-app-plugin-repository-example/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/examples/app-plugin-skills-example/skills/nocobase-app-plugin-skills-example/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/libs/db/skills/nocobase-db/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/libs/drive/skills/nocobase-drive/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/libs/realtime/skills/nocobase-realtime/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-agent-sessions/skills/nocobase-app-plugin-agent-sessions/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-agents/skills/nocobase-app-plugin-agents/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-api-keys/skills/nocobase-app-plugin-api-keys/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-authentication/skills/nocobase-app-plugin-authentication/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-authorization/skills/nocobase-app-plugin-authorization/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-authz-default-access/skills/nocobase-app-plugin-authz-default-access/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-authz-restriction-rules/skills/nocobase-app-plugin-authz-restriction-rules/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-authz-sharing-rules/skills/nocobase-app-plugin-authz-sharing-rules/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-concurrency/skills/nocobase-app-plugin-concurrency/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-database-explorer/skills/nocobase-app-plugin-database-explorer/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-demo-mode/skills/nocobase-app-plugin-demo-mode/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-file/skills/nocobase-app-plugin-file/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-foundation/skills/nocobase-app-plugin-foundation/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-i18n/skills/nocobase-app-plugin-i18n/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-mail/skills/nocobase-app-plugin-mail/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-notification-in-app/skills/nocobase-app-plugin-notification-in-app/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-notification-web-push/skills/nocobase-app-plugin-notification-web-push/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-notification/skills/nocobase-app-plugin-notification/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-projects/skills/nocobase-app-plugin-projects/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-scheduler/skills/nocobase-app-plugin-scheduler/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-template-print/skills/nocobase-app-plugin-template-print/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/plugins/app-plugin-users/skills/nocobase-app-plugin-users/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
packages/tools/create-plugin/template/skills/nocobase-app-plugin-__NOCOBASE_SHORT_NAME__/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
skills/nocobase-app-installer/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
skills/nocobase-app-plugin-development/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 44119842fbf9
No earlier version was observed for comparison.
skills/nocobase-create-app/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 44119842fbf9
No earlier version was observed for comparison.
Verified commit 44119842fbf9ac7f3024d55b7306354d2863a01b
git clone --filter=blob:none --no-checkout https://github.com/nocobase/nocobase.git .hotskills/nocobase-nocobase && git -C .hotskills/nocobase-nocobase checkout --detach 44119842fbf9ac7f3024d55b7306354d2863a01b
# Copy each selected skill directory from .hotskills/nocobase-nocobase into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/nocobase/nocobase.git .hotskills/nocobase-nocobase && git -C .hotskills/nocobase-nocobase checkout --detach 44119842fbf9ac7f3024d55b7306354d2863a01b
# Copy each selected skill directory from .hotskills/nocobase-nocobase into .agents/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/nocobase/nocobase.git .hotskills/nocobase-nocobase && git -C .hotskills/nocobase-nocobase checkout --detach 44119842fbf9ac7f3024d55b7306354d2863a01b
# Copy each selected skill directory from .hotskills/nocobase-nocobase into .cursor/skills/<skill-name>/Heat
5.9- Star growth, last 7 daysAhead of 61% of tracked repositories
- Star growth, last 24 hoursAhead of 70% of tracked repositories
- Rank movement, last 7 daysNot available
- Commits, last 30 daysAhead of 99% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- nb-studio-cli
packages/app/app-cli-client/tests/fixtures/packaged-cli/skills/nb-studio-cli - nocobase-app-development
packages/app/app-skills/skills/nocobase-app-development - shadcn
packages/app/app-skills/skills/nocobase-app-development/references/frontend/shadcn - nocobase-app-plugin-development
packages/app/app-skills/skills/nocobase-app-plugin-development - nocobase-app-upgrade
packages/app/app-skills/skills/nocobase-app-upgrade - nocobase-deployment
packages/app/app-skills/skills/nocobase-deployment - nocobase-app-plugin-cli-example
packages/examples/app-plugin-cli-example/skills/nocobase-app-plugin-cli-example - nocobase-app-plugin-repository-example
packages/examples/app-plugin-repository-example/skills/nocobase-app-plugin-repository-example - nocobase-app-plugin-skills-example
packages/examples/app-plugin-skills-example/skills/nocobase-app-plugin-skills-example - nocobase-db
packages/libs/db/skills/nocobase-db - nocobase-drive
packages/libs/drive/skills/nocobase-drive - nocobase-realtime
packages/libs/realtime/skills/nocobase-realtime - nocobase-app-plugin-agent-sessions
packages/plugins/app-plugin-agent-sessions/skills/nocobase-app-plugin-agent-sessions - nocobase-app-plugin-agents
packages/plugins/app-plugin-agents/skills/nocobase-app-plugin-agents - nocobase-app-plugin-api-keys
packages/plugins/app-plugin-api-keys/skills/nocobase-app-plugin-api-keys - nocobase-app-plugin-authentication
packages/plugins/app-plugin-authentication/skills/nocobase-app-plugin-authentication - nocobase-app-plugin-authorization
packages/plugins/app-plugin-authorization/skills/nocobase-app-plugin-authorization - nocobase-app-plugin-authz-default-access
packages/plugins/app-plugin-authz-default-access/skills/nocobase-app-plugin-authz-default-access - nocobase-app-plugin-authz-restriction-rules
packages/plugins/app-plugin-authz-restriction-rules/skills/nocobase-app-plugin-authz-restriction-rules - nocobase-app-plugin-authz-sharing-rules
packages/plugins/app-plugin-authz-sharing-rules/skills/nocobase-app-plugin-authz-sharing-rules - nocobase-app-plugin-concurrency
packages/plugins/app-plugin-concurrency/skills/nocobase-app-plugin-concurrency - nocobase-app-plugin-database-explorer
packages/plugins/app-plugin-database-explorer/skills/nocobase-app-plugin-database-explorer - nocobase-app-plugin-demo-mode
packages/plugins/app-plugin-demo-mode/skills/nocobase-app-plugin-demo-mode - nocobase-app-plugin-file
packages/plugins/app-plugin-file/skills/nocobase-app-plugin-file - nocobase-app-plugin-foundation
packages/plugins/app-plugin-foundation/skills/nocobase-app-plugin-foundation - nocobase-app-plugin-i18n
packages/plugins/app-plugin-i18n/skills/nocobase-app-plugin-i18n - nocobase-app-plugin-mail
packages/plugins/app-plugin-mail/skills/nocobase-app-plugin-mail - nocobase-app-plugin-notification-in-app
packages/plugins/app-plugin-notification-in-app/skills/nocobase-app-plugin-notification-in-app - nocobase-app-plugin-notification-web-push
packages/plugins/app-plugin-notification-web-push/skills/nocobase-app-plugin-notification-web-push - nocobase-app-plugin-notification
packages/plugins/app-plugin-notification/skills/nocobase-app-plugin-notification - nocobase-app-plugin-projects
packages/plugins/app-plugin-projects/skills/nocobase-app-plugin-projects - nocobase-app-plugin-scheduler
packages/plugins/app-plugin-scheduler/skills/nocobase-app-plugin-scheduler - nocobase-app-plugin-template-print
packages/plugins/app-plugin-template-print/skills/nocobase-app-plugin-template-print - nocobase-app-plugin-users
packages/plugins/app-plugin-users/skills/nocobase-app-plugin-users - nocobase-app-plugin-__NOCOBASE_SHORT_NAME__
packages/tools/create-plugin/template/skills/nocobase-app-plugin-__NOCOBASE_SHORT_NAME__ - nocobase-app-installer
skills/nocobase-app-installer - nocobase-app-plugin-development
skills/nocobase-app-plugin-development - nocobase-create-app
skills/nocobase-create-app
How it works
nb-studio-cli
When your agent uses it
A synthetic Studio Skill for offline CLI tests.
What it loads into context
Frontmatter
18 tokensAlways available to the agent
SKILL.md
25 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore109 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-development
When your agent uses it
Primary entry for building complete NocoBase 3 applications and individual features: business and administration pages, routes, components, endpoints, data, permissions, services, translations, and tests. Use this application-local workflow instead of globally installed NocoBase 2 Skills. For local or published NocoBase 3 plugin packages, use the project plugin development Skill.
What it loads into context
Frontmatter
105 tokensAlways available to the agent
SKILL.md
7,716 tokensWhen the skill is activated
Reference documents
293,388 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Before you start
- Plan the complete feature before implementation
- Choose where the feature belongs
- Check the installed plugins first
- Choose sample data or a demo system
- Deliver system administration by default
- Learn the endpoints from the API document
- Include administration by default
- Frontend work
- Choose your reference
- Business permissions
- Database configuration factories
- Where to work
- Ownership
- Reversible customization
- Non-negotiables
- The development server
- Finishing
- Logging
- Storage
- Process UI delivery gate
Scripts executed separately
assets/business-examples/onboarding/cli/commands/onboarding-reset.tsassets/business-examples/onboarding/client/pages/onboarding/choice.tsxassets/business-examples/onboarding/client/pages/onboarding/index.tsxassets/business-examples/onboarding/client/pages/onboarding/locales.tsassets/business-examples/onboarding/client/pages/onboarding/wizard.tsxassets/business-examples/onboarding/database/main/migrations/202611050001_create_onboarding.tsassets/business-examples/onboarding/database/main/seeds/202611050001_onboarding.tsassets/business-examples/onboarding/database/main/seeds/202611050002_onboarding_samples.tsassets/business-examples/onboarding/server/lifecycles/onboarding.tsassets/business-examples/onboarding/server/providers/onboarding-registration.tsassets/business-examples/onboarding/server/providers/onboarding-reset.tsassets/business-examples/onboarding/server/providers/onboarding.tsassets/business-examples/onboarding/server/routes/onboarding.tsassets/business-examples/onboarding/shared/onboarding.tsassets/business-examples/onboarding/tests/client/onboarding.test.tsxassets/business-examples/onboarding/tests/database/onboarding.test.tsassets/business-examples/onboarding/tests/playwright/onboarding.test.tsassets/business-examples/onboarding/tests/server/onboarding.test.tsassets/business-examples/procurement/cli/commands/procurement-reset.tsassets/business-examples/procurement/client/pages/procurement/detail.tsxassets/business-examples/procurement/client/pages/procurement/index.tsxassets/business-examples/procurement/client/pages/procurement/locales.tsassets/business-examples/procurement/client/pages/procurement/reference.tsxassets/business-examples/procurement/database/main/migrations/202611040001_create_procurement.tsassets/business-examples/procurement/database/main/seeds/202611040001_procurement.tsassets/business-examples/procurement/database/main/seeds/202611040002_procurement_samples.tsassets/business-examples/procurement/server/lifecycles/procurement.tsassets/business-examples/procurement/server/providers/procurement-registration.tsassets/business-examples/procurement/server/providers/procurement-reset.tsassets/business-examples/procurement/server/providers/procurement.tsassets/business-examples/procurement/server/routes/procurement.tsassets/business-examples/procurement/shared/procurement.tsassets/business-examples/procurement/tests/client/procurement.test.tsxassets/business-examples/procurement/tests/database/procurement.test.tsassets/business-examples/procurement/tests/playwright/procurement.test.tsassets/business-examples/procurement/tests/server/procurement.test.tsassets/customer-contacts-example/client/pages/customer-contacts/batch.tsxassets/customer-contacts-example/client/pages/customer-contacts/detail.tsxassets/customer-contacts-example/client/pages/customer-contacts/edit.tsxassets/customer-contacts-example/client/pages/customer-contacts/index.tsxassets/customer-contacts-example/client/pages/customer-contacts/locales.tsassets/customer-contacts-example/client/pages/customer-contacts/model.tsassets/customer-contacts-example/client/pages/customer-contacts/relation-picker.tsxassets/customer-contacts-example/client/pages/customer-contacts/shared.tsxassets/customer-contacts-example/database/main/migrations/202611030002_create_customer_contacts.tsassets/customer-contacts-example/database/main/seeds/202611030002_customer_contacts.tsassets/customer-contacts-example/server/providers/customer-contacts-authorization.tsassets/customer-contacts-example/server/providers/customer-contacts-data.tsassets/customer-contacts-example/server/providers/customer-contacts.tsassets/customer-contacts-example/server/routes/customer-contacts.tsassets/customer-contacts-example/tests/client/customer-contacts.test.tsxassets/customer-contacts-example/tests/database/customer-contacts-migration.test.tsassets/customer-contacts-example/tests/server/customer-contacts.test.tsassets/list-edit-example/client/pages/skill-projects/edit.tsxassets/list-edit-example/client/pages/skill-projects/index.tsxassets/list-edit-example/client/pages/skill-projects/locales.tsassets/list-edit-example/database/main/migrations/202611030001_create_skill_projects.tsassets/list-edit-example/server/providers/skill-projects.tsassets/list-edit-example/server/routes/skill-projects.tsassets/list-edit-example/tests/client/skill-projects.test.tsxassets/list-edit-example/tests/database/skill-projects-migration.test.tsassets/list-edit-example/tests/server/skill-projects.test.tsreferences/frontend/scripts/capture.mjsscripts/check-ui-components.mjsscripts/create-internal-package.mjs
Files
SKILL.mdcore48,228 bytesSKILL.mdcore48,228 bytesSKILL.mdcore48,228 bytesSKILL.mdcore48,228 bytesSKILL.mdcore48,228 bytesSKILL.mdcore48,228 bytesSKILL.mdcore48,228 bytesSKILL.mdcore48,228 bytesSKILL.mdcore48,228 bytesSKILL.mdcore48,228 bytesSKILL.mdcore48,228 bytesSKILL.mdcore48,228 bytesSKILL.mdcore48,228 bytesassets/business-examples/index.jsonasset8,964 bytesassets/business-examples/onboarding/cli/commands/onboarding-reset.tsruns2,216 bytesassets/business-examples/onboarding/client/pages/onboarding/choice.tsxruns1,388 bytesassets/business-examples/onboarding/client/pages/onboarding/index.tsxruns4,297 bytesassets/business-examples/onboarding/client/pages/onboarding/locales.tsruns8,866 bytesassets/business-examples/onboarding/client/pages/onboarding/wizard.tsxruns50,598 bytesassets/business-examples/onboarding/database/main/migrations/202611050001_create_onboarding.tsruns4,051 bytesassets/business-examples/onboarding/database/main/seeds/202611050001_onboarding.tsruns1,468 bytesassets/business-examples/onboarding/database/main/seeds/202611050002_onboarding_samples.tsruns854 bytesassets/business-examples/onboarding/docs/onboarding.mddoc12,375 bytesassets/business-examples/onboarding/server/lifecycles/onboarding.tsruns647 bytesassets/business-examples/onboarding/server/providers/onboarding-registration.tsruns1,293 bytesassets/business-examples/onboarding/server/providers/onboarding-reset.tsruns1,032 bytesassets/business-examples/onboarding/server/providers/onboarding.tsruns14,092 bytesassets/business-examples/onboarding/server/routes/onboarding.tsruns9,066 bytesassets/business-examples/onboarding/shared/onboarding.tsruns4,816 bytesassets/business-examples/onboarding/tests/client/onboarding.test.tsxruns13,789 bytesassets/business-examples/onboarding/tests/database/onboarding.test.tsruns1,493 bytesassets/business-examples/onboarding/tests/playwright/onboarding.test.tsruns15,414 bytesassets/business-examples/onboarding/tests/server/onboarding.test.tsruns16,990 bytesassets/business-examples/procurement/cli/commands/procurement-reset.tsruns2,157 bytesassets/business-examples/procurement/client/pages/procurement/detail.tsxruns16,733 bytesassets/business-examples/procurement/client/pages/procurement/index.tsxruns4,342 bytesassets/business-examples/procurement/client/pages/procurement/locales.tsruns4,951 bytesassets/business-examples/procurement/client/pages/procurement/reference.tsxruns3,587 bytesassets/business-examples/procurement/database/main/migrations/202611040001_create_procurement.tsruns2,866 bytesassets/business-examples/procurement/database/main/seeds/202611040001_procurement.tsruns1,471 bytesassets/business-examples/procurement/database/main/seeds/202611040002_procurement_samples.tsruns1,068 bytesassets/business-examples/procurement/docs/procurement.mddoc9,609 bytesassets/business-examples/procurement/server/lifecycles/procurement.tsruns1,364 bytesassets/business-examples/procurement/server/providers/procurement-registration.tsruns1,303 bytesassets/business-examples/procurement/server/providers/procurement-reset.tsruns934 bytesassets/business-examples/procurement/server/providers/procurement.tsruns16,424 bytesassets/business-examples/procurement/server/routes/procurement.tsruns9,537 bytesassets/business-examples/procurement/shared/procurement.tsruns2,883 bytesassets/business-examples/procurement/tests/client/procurement.test.tsxruns14,013 bytesassets/business-examples/procurement/tests/database/procurement.test.tsruns1,293 bytesassets/business-examples/procurement/tests/playwright/procurement.test.tsruns17,468 bytesassets/business-examples/procurement/tests/server/procurement.test.tsruns18,120 bytesassets/customer-contacts-example/client/pages/customer-contacts/batch.tsxruns5,653 bytesassets/customer-contacts-example/client/pages/customer-contacts/detail.tsxruns12,582 bytesassets/customer-contacts-example/client/pages/customer-contacts/edit.tsxruns13,952 bytesassets/customer-contacts-example/client/pages/customer-contacts/index.tsxruns15,228 bytesassets/customer-contacts-example/client/pages/customer-contacts/locales.tsruns5,299 bytesassets/customer-contacts-example/client/pages/customer-contacts/model.tsruns1,744 bytesassets/customer-contacts-example/client/pages/customer-contacts/relation-picker.tsxruns9,703 bytesassets/customer-contacts-example/client/pages/customer-contacts/shared.tsxruns3,822 bytesassets/customer-contacts-example/database/main/migrations/202611030002_create_customer_contacts.tsruns1,677 bytesassets/customer-contacts-example/database/main/seeds/202611030002_customer_contacts.tsruns6,073 bytesassets/customer-contacts-example/server/providers/customer-contacts-authorization.tsruns5,163 bytesassets/customer-contacts-example/server/providers/customer-contacts-data.tsruns1,386 bytesassets/customer-contacts-example/server/providers/customer-contacts.tsruns12,932 bytesassets/customer-contacts-example/server/routes/customer-contacts.tsruns10,537 bytesassets/customer-contacts-example/tests/client/customer-contacts.test.tsxruns17,447 bytesassets/customer-contacts-example/tests/database/customer-contacts-migration.test.tsruns976 bytesassets/customer-contacts-example/tests/server/customer-contacts.test.tsruns12,048 bytesassets/list-edit-example/client/pages/skill-projects/edit.tsxruns11,893 bytesassets/list-edit-example/client/pages/skill-projects/index.tsxruns8,047 bytesassets/list-edit-example/client/pages/skill-projects/locales.tsruns3,206 bytesassets/list-edit-example/database/main/migrations/202611030001_create_skill_projects.tsruns452 bytesassets/list-edit-example/server/providers/skill-projects.tsruns1,514 bytesassets/list-edit-example/server/routes/skill-projects.tsruns7,023 bytesassets/list-edit-example/tests/client/skill-projects.test.tsxruns24,760 bytesassets/list-edit-example/tests/database/skill-projects-migration.test.tsruns751 bytesassets/list-edit-example/tests/server/skill-projects.test.tsruns7,127 bytesreferences/app-structure.mddoc7,410 bytesreferences/authorization.mddoc14,077 bytesreferences/business-administration.mddoc18,719 bytesreferences/business-examples.mddoc3,157 bytesreferences/cli.mddoc13,914 bytesreferences/commands.mddoc14,009 bytesreferences/database-and-data.mddoc2,689 bytesreferences/database-connections.mddoc23,191 bytesreferences/dependencies.mddoc10,424 bytesreferences/dev-server.mddoc7,602 bytesreferences/frontend/component-selection.mddoc6,531 bytesreferences/frontend/design-contract.mddoc11,970 bytesreferences/frontend/design-sources.mddoc6,398 bytesreferences/frontend/frontend-dev.mddoc27,990 bytesreferences/frontend/references/api.mddoc44,174 bytesreferences/frontend/references/child-routes.mddoc45,269 bytesreferences/frontend/references/example.mddoc5,562 bytesreferences/frontend/references/example/complete-button.mddoc3,876 bytesreferences/frontend/references/example/copy.mddoc15,857 bytesreferences/frontend/references/example/create-dialog.mddoc4,187 bytesreferences/frontend/references/example/create-page.mddoc4,531 bytesreferences/frontend/references/example/customer-picker.mddoc4,960 bytesreferences/frontend/references/example/delete-dialog.mddoc6,524 bytesreferences/frontend/references/example/detail-drawer.mddoc11,349 bytesreferences/frontend/references/example/detail-page-tabs.mddoc26,036 bytesreferences/frontend/references/example/edit-dialog.mddoc10,251 bytesreferences/frontend/references/example/list-page.mddoc18,096 bytesreferences/frontend/references/example/members-card.mddoc8,167 bytesreferences/frontend/references/example/project-dashboard.mddoc17,319 bytesreferences/frontend/references/example/project-form.mddoc11,940 bytesreferences/frontend/references/example/project-summary.mddoc6,279 bytesreferences/frontend/references/example/public-switch.mddoc3,707 bytesreferences/frontend/references/example/server-table.mddoc8,650 bytesreferences/frontend/references/example/session-expired-alert.mddoc2,079 bytesreferences/frontend/references/example/settings-form.mddoc11,173 bytesreferences/frontend/references/example/settings-page.mddoc6,412 bytesreferences/frontend/references/example/types.mddoc4,080 bytesreferences/frontend/references/example/url-search.mddoc6,358 bytesreferences/frontend/references/executable-list-edit.mddoc6,518 bytesreferences/frontend/references/executable-relation-batch.mddoc9,946 bytesreferences/frontend/references/form.mddoc45,864 bytesreferences/frontend/references/i18n.mddoc28,126 bytesreferences/frontend/references/list-feedback.mddoc7,132 bytesreferences/frontend/references/overlay.mddoc40,686 bytesreferences/frontend/references/page.mddoc50,566 bytesreferences/frontend/references/shadcn.mddoc20,037 bytesreferences/frontend/references/shell.mddoc9,149 bytesreferences/frontend/references/styling.mddoc35,627 bytesreferences/frontend/references/table.mddoc38,642 bytesreferences/frontend/references/testing.mddoc20,579 bytesreferences/frontend/references/theme.mddoc44,296 bytesreferences/frontend/references/ui-library.mddoc56,212 bytesreferences/frontend/scripts/capture.mddoc11,859 bytesreferences/frontend/scripts/capture.mjsruns15,416 bytesreferences/frontend/templates/design.mddoc11,279 bytesreferences/frontend/templates/prompts.mddoc8,898 bytesreferences/frontend/templates/review.mddoc4,741 bytesreferences/frontend/templates/run.mddoc3,052 bytesreferences/frontend/templates/system-design.mddoc2,160 bytesreferences/frontend/ui-acceptance.mddoc6,196 bytesreferences/frontend/ui-guidelines.mddoc44,345 bytesreferences/frontend/ui-workflow.mddoc27,605 bytesreferences/http-api.mddoc37,352 bytesreferences/i18n.mddoc5,874 bytesreferences/internal-package-example.mddoc4,306 bytesreferences/lifecycle-parameters.mddoc14,326 bytesreferences/lifecycle-ui.mddoc28,878 bytesreferences/lifecycle.mddoc38,911 bytesreferences/migrations.mddoc24,016 bytesreferences/organization.mddoc5,622 bytesreferences/organization/model-and-service.mddoc5,404 bytesreferences/organization/permission-design.mddoc12,076 bytesreferences/organization/scopes.mddoc8,039 bytesreferences/organization/settings-page.mddoc6,122 bytesreferences/organization/subjects.mddoc13,371 bytesreferences/organization/testing.mddoc4,201 bytesreferences/plugins.mddoc16,310 bytesreferences/server-routes.mddoc19,279 bytesreferences/services-and-jobs.mddoc30,404 bytesreferences/setup-readiness.mddoc10,895 bytesreferences/submission.mddoc11,651 bytesreferences/system-administration.mddoc5,516 bytesreferences/system-settings.mddoc31,022 bytesreferences/template-variants.mddoc2,605 bytesreferences/testing.mddoc28,347 bytesreferences/testing/cli/command.mddoc7,417 bytesreferences/testing/cli/files.mddoc9,387 bytesreferences/testing/client/page.mddoc12,750 bytesreferences/testing/database/migration.mddoc2,896 bytesreferences/testing/database/repository.mddoc7,071 bytesreferences/testing/playwright/login.mddoc6,358 bytesreferences/testing/server/routes.mddoc7,988 bytesscripts/check-ui-components.mjsruns10,556 bytesscripts/create-internal-package.mjsruns3,218 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubshadcn
When your agent uses it
Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI, including chat interfaces. Provides project context, component docs, and usage examples. Applies when working with shadcn/ui, component registries, presets, --preset codes, or any project with a components.json file. Also triggers for "shadcn init", "create an app with --preset", or "switch to --preset".
What it loads into context
Frontmatter
142 tokensAlways available to the agent
SKILL.md
4,866 tokensWhen the skill is activated
Reference documents
16,488 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Current Project Context
- Principles
- Critical Rules
- Key Patterns
- Component Selection
- Key Fields
- Component Docs, Examples, and Usage
- Workflow
- Updating Components
- Quick Reference
- Detailed References
Files
SKILL.mdcore19,526 bytesSKILL.mdcore19,526 bytesSKILL.mdcore19,526 bytesSKILL.mdcore19,526 bytesSKILL.mdcore19,526 bytesagents/openai.ymlasset238 bytesassets/shadcn-small.pngasset1,049 bytesassets/shadcn.pngasset3,852 bytescli.mddoc17,416 bytescustomization.mddoc6,078 bytesevals/evals.jsonasset6,330 bytesmcp.mddoc3,510 bytesregistry.mddoc8,817 bytesrules/base-vs-radix.mddoc6,977 bytesrules/chat.mddoc8,018 bytesrules/composition.mddoc5,731 bytesrules/forms.mddoc4,886 bytesrules/icons.mddoc1,965 bytesrules/styling.mddoc4,676 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-development
When your agent uses it
Create and maintain NocoBase 3 plugins inside an existing App or a NocoBase 3 source workspace, including Client, Server, CLI, database resources, UI Library integration, Plugin Skills, and registration. Use for App-local plugins under packages/ and source-workspace plugins or examples. Not for creating an App, application-only feature work, or legacy NocoBase 2 plugins.
What it loads into context
Frontmatter
90 tokensAlways available to the agent
SKILL.md
2,693 tokensWhen the skill is activated
Reference documents
73,442 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Choose the relevant references
- Rules that apply before implementation
- Implementation workflow
Scripts executed separately
assets/testing-example/cli/count.tsassets/testing-example/cli/index.tsassets/testing-example/client/index.tsassets/testing-example/client/locales/de-DE.tsassets/testing-example/client/locales/en-US.tsassets/testing-example/client/locales/es-ES.tsassets/testing-example/client/locales/fr-FR.tsassets/testing-example/client/locales/id-ID.tsassets/testing-example/client/locales/index.tsassets/testing-example/client/locales/ja-JP.tsassets/testing-example/client/locales/pt-BR.tsassets/testing-example/client/locales/vi-VN.tsassets/testing-example/client/locales/zh-CN.tsassets/testing-example/client/locales/zh-TW.tsassets/testing-example/client/public-config.tsassets/testing-example/client/reading-list.tsxassets/testing-example/database/migrations/202610180001_reading_list.tsassets/testing-example/eslint.config.jsassets/testing-example/package.jsonassets/testing-example/server/config.tsassets/testing-example/server/index.tsassets/testing-example/server/provider.tsassets/testing-example/server/providers/index.tsassets/testing-example/server/routes.tsassets/testing-example/server/service.tsassets/testing-example/tests/cli/count.test.tsassets/testing-example/tests/client/public-config.test.tsxassets/testing-example/tests/client/reading-list.test.tsxassets/testing-example/tests/database/migration.test.tsassets/testing-example/tests/fixtures/app/package.jsonassets/testing-example/tests/fixtures/app/server/app.tsassets/testing-example/tests/fixtures/app/server/runtime.tsassets/testing-example/tests/fixtures/app/server/standalone.tsassets/testing-example/tests/helpers/app.tsassets/testing-example/tests/server/config.test.tsassets/testing-example/tests/server/routes.test.tsassets/testing-example/vitest.config.tsscripts/verify-testing-example.mjs
Files
SKILL.mdcore14,615 bytesSKILL.mdcore14,615 bytesSKILL.mdcore14,615 bytesSKILL.mdcore14,615 bytesSKILL.mdcore14,615 bytesSKILL.mdcore14,615 bytesSKILL.mdcore14,615 bytesSKILL.mdcore14,615 bytesSKILL.mdcore14,615 bytesSKILL.mdcore14,615 bytesSKILL.mdcore14,615 bytesagents/openai.yamlasset282 bytesassets/testing-example/.gitignoreasset9 bytesassets/testing-example/cli/count.tsruns485 bytesassets/testing-example/cli/index.tsruns276 bytesassets/testing-example/client/index.tsruns453 bytesassets/testing-example/client/locales/de-DE.tsruns271 bytesassets/testing-example/client/locales/en-US.tsruns295 bytesassets/testing-example/client/locales/es-ES.tsruns276 bytesassets/testing-example/client/locales/fr-FR.tsruns286 bytesassets/testing-example/client/locales/id-ID.tsruns249 bytesassets/testing-example/client/locales/index.tsruns505 bytesassets/testing-example/client/locales/ja-JP.tsruns322 bytesassets/testing-example/client/locales/pt-BR.tsruns272 bytesassets/testing-example/client/locales/vi-VN.tsruns267 bytesassets/testing-example/client/locales/zh-CN.tsruns247 bytesassets/testing-example/client/locales/zh-TW.tsruns247 bytesassets/testing-example/client/public-config.tsruns334 bytesassets/testing-example/client/reading-list.tsxruns1,656 bytesassets/testing-example/database/migrations/202610180001_reading_list.tsruns524 bytesassets/testing-example/eslint.config.jsruns184 bytesassets/testing-example/package.jsonruns1,595 bytesassets/testing-example/server/config.tsruns1,016 bytesassets/testing-example/server/index.tsruns705 bytesassets/testing-example/server/provider.tsruns1,221 bytesassets/testing-example/server/providers/index.tsruns137 bytesassets/testing-example/server/routes.tsruns1,782 bytesassets/testing-example/server/service.tsruns908 bytesassets/testing-example/tests/cli/count.test.tsruns1,835 bytesassets/testing-example/tests/client/public-config.test.tsxruns581 bytesassets/testing-example/tests/client/reading-list.test.tsxruns2,791 bytesassets/testing-example/tests/database/migration.test.tsruns698 bytesassets/testing-example/tests/fixtures/app/package.jsonruns86 bytesassets/testing-example/tests/fixtures/app/server/app.tsruns675 bytesassets/testing-example/tests/fixtures/app/server/runtime.tsruns2,124 bytesassets/testing-example/tests/fixtures/app/server/standalone.tsruns874 bytesassets/testing-example/tests/helpers/app.tsruns859 bytesassets/testing-example/tests/server/config.test.tsruns1,195 bytesassets/testing-example/tests/server/routes.test.tsruns1,758 bytesassets/testing-example/tsconfig.jsonasset321 bytesassets/testing-example/vitest.config.tsruns925 bytesreferences/cli.mddoc25,350 bytesreferences/client-api.mddoc10,904 bytesreferences/client-child-routes.mddoc18,062 bytesreferences/client-components.mddoc17,553 bytesreferences/client-examples.mddoc21,079 bytesreferences/client-pages-and-routes.mddoc9,055 bytesreferences/client-routing.mddoc10,335 bytesreferences/client.mddoc9,128 bytesreferences/configuration.mddoc6,927 bytesreferences/database.mddoc14,670 bytesreferences/http-api.mddoc19,272 bytesreferences/i18n.mddoc20,218 bytesreferences/plugin-foundation.mddoc17,865 bytesreferences/plugin-skills.mddoc7,814 bytesreferences/registration.mddoc10,981 bytesreferences/registry.mddoc1,817 bytesreferences/repository-examples.mddoc11,425 bytesreferences/server-route-examples.mddoc22,694 bytesreferences/server.mddoc22,353 bytesreferences/service-examples.mddoc15,080 bytesreferences/services.mddoc10,994 bytesreferences/system-settings.mddoc9,850 bytesreferences/testing-example.mddoc9,657 bytesreferences/testing.mddoc20,683 bytesreferences/theme-tokens.mddoc9,202 bytesreferences/ui-design.mddoc5,797 bytesscripts/verify-testing-example.mjsruns2,521 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-upgrade
When your agent uses it
Upgrade this application to a newer release of the template it was generated from, which is how this application moves to a newer NocoBase version. Users rarely think in terms of templates, so use it whenever the user asks to upgrade or update NocoBase, the NocoBase core, kernel or framework version, or the @nocobase packages as a whole — for example "upgrade NocoBase", "update the NocoBase core version", "move to the latest NocoBase release", "升级 NocoBase", "升级 NocoBase 内核版本", "更新 NocoBase 到最新版" — as well as when they ask to upgrade the template, pull in template changes, move to a newer template version, or reconcile the application with upstream. Do not use for ordinary feature development, for upgrading a single dependency, or for upgrading an already deployed build on a server, which the app installer handles.
What it loads into context
Frontmatter
233 tokensAlways available to the agent
SKILL.md
4,619 tokensWhen the skill is activated
Reference documents
27,293 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Secure a way back
- 2. Identify the source
- 3. Select the release channel and fetch both releases
- 3a. Discover the target release’s requirements before editing
- 4. Read what changed, and who else changed it
- 5. Check what the diff cannot show
- 6. Work through the files
- 7. Reconcile what is not ordinary source
- 8. Finish
- Crossing several releases
Files
SKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesSKILL.mdcore23,027 bytesreferences/application-cookie-isolation.mddoc5,052 bytesreferences/database-upgrades.mddoc8,909 bytesreferences/edge-cases.mddoc51,807 bytesreferences/form-feedback-upgrade.mddoc8,107 bytesreferences/list-feedback-upgrade.mddoc9,883 bytesreferences/list-navigation-upgrade.mddoc12,030 bytesreferences/notification-upgrade.mddoc10,353 bytesreferences/plugin-development-skill.mddoc4,428 bytesreferences/realtime-upgrade.mddoc14,583 bytesreferences/submission-upgrade.mddoc5,618 bytesreferences/theme-upgrade.mddoc8,128 bytesreferences/versioned-upgrade-verification.mddoc5,816 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-deployment
When your agent uses it
Plan, build, deploy, verify, upgrade, and troubleshoot NocoBase 3 applications on an existing Studio or a standalone Node.js or Docker server. Use when an application must move from source to a deployment environment or when a deployment failure needs diagnosis.
What it loads into context
Frontmatter
61 tokensAlways available to the agent
SKILL.md
5,400 tokensWhen the skill is activated
Reference documents
3,628 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Stop and identify the deployment
- Deploy to an existing Studio
- Prepare the source and artifact
- Decide the data operation
- Build and review production configuration
- Choose the deployment path
- Verify the deployed application
- API documentation in production
- Update, rollback, and recovery
- Report the result
Files
../nocobase-app-upgrade/references/database-upgrades.mddoc8,909 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesSKILL.mdcore25,755 bytesagents/openai.yamlasset290 bytesreferences/deploy-to-studio.mddoc10,151 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-cli-example
When your agent uses it
Use when adding commands to an application's nocobase CLI, or when working out how a plugin contributes CLI commands. Covers the ./cli entry, defineCliPlugin, and how topics are assembled.
What it loads into context
Frontmatter
51 tokensAlways available to the agent
SKILL.md
1,382 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- What a CLI plugin is
- The three pieces
- Rules that matter
- Verify
Files
SKILL.mdcore5,701 bytesSKILL.mdcore5,701 bytesSKILL.mdcore5,701 bytesSKILL.mdcore5,701 bytesSKILL.mdcore5,701 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-repository-example
When your agent uses it
Use the NocoBase 3 Repository API example plugin to demonstrate array and streamed findMany queries, CRM and order CRUD, relation reads and writes, optimistic locking, atomic numeric updates, and aggregate queries.
What it loads into context
Frontmatter
54 tokensAlways available to the agent
SKILL.md
2,085 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Prerequisites and registration
- Public surfaces
- Ownership and verification
Files
SKILL.mdcore10,562 bytesSKILL.mdcore10,562 bytesSKILL.mdcore10,562 bytesSKILL.mdcore10,562 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-skills-example
When your agent uses it
Use the Skills Example plugin to add its App Notice component, read its authenticated default Notice API, or consume its Server ServiceToken in a NocoBase App.
What it loads into context
Frontmatter
58 tokensAlways available to the agent
SKILL.md
690 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Public surfaces
- Add the Notice to an App page
- Consume the Server contract
- Ownership and constraints
- Verification
Files
SKILL.mdcore3,237 bytesSKILL.mdcore3,237 bytesSKILL.mdcore3,237 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-db
When your agent uses it
Work with the database in a NocoBase 3 application: configure connections and dialects, add migrations and seeds, declare schema with the Collection Builder, read and write records with Repository or QueryAdapter, run transactions, and read Collection definitions. Use for any task under database/ or any server code that touches data. Do not use for the NocoBase 2 @nocobase/database package.
What it loads into context
Frontmatter
112 tokensAlways available to the agent
SKILL.md
7,330 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Where the code lives
- 1. Configuration
- 2. Migrations and seeds
- 3. Builder
- 4. Repository and Query
- 5. Transactions
- 6. Collections
- What each API names
- API shapes that do not exist
- Verify
Files
SKILL.mdcore35,792 bytesSKILL.mdcore35,792 bytesSKILL.mdcore35,792 bytesSKILL.mdcore35,792 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-drive
When your agent uses it
Configure and use file storage with @nocobase/drive in NocoBase 3 applications, including local filesystem, S3-compatible storage, native Aliyun OSS, and custom driver factories. Use when changing drive configuration, storage credentials, file operations, or storage URLs. File Repository collections and upload permissions belong to the File plugin.
What it loads into context
Frontmatter
76 tokensAlways available to the agent
SKILL.md
865 tokensWhen the skill is activated
Reference documents
4,415 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configuration and application integration
- Boundaries and verification
Files
SKILL.mdcore4,497 bytesreferences/custom-drivers.mddoc4,606 bytesreferences/fs.mddoc3,615 bytesreferences/oss.mddoc8,893 bytesreferences/s3.mddoc5,523 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-realtime
When your agent uses it
Design and implement live updates in NocoBase 3 applications and plugins using @nocobase/realtime, host client hooks and authorized server topics. Use for replacing business polling, snapshot recovery, task progress, personal notifications, streamed logs or multi-process fan-out. Not for OpenAI audio Realtime APIs.
What it loads into context
Frontmatter
72 tokensAlways available to the agent
SKILL.md
592 tokensWhen the skill is activated
Reference documents
2,592 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Choose the data contract first
- Boundaries to preserve
Files
SKILL.mdcore3,236 bytesSKILL.mdcore3,236 bytesreferences/client.mddoc3,326 bytesreferences/scenarios.mddoc4,230 bytesreferences/server.mddoc4,482 bytesreferences/testing.mddoc2,752 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-agent-sessions
When your agent uses it
Register the Agent Sessions plugin in a NocoBase App so people talk in the browser with the coding agents on their own computers (Codex, Claude Code, Gemini CLI, GitHub Copilot, Cursor, OpenCode and more, on macOS, Linux or Windows; `<cli> acp service install` or `acp start`), route its page, tie the App's records to sessions with a link kind (registerLinkKind) that people can also mention with `#`, let sessions work for the App's projects (registerProjects), tell the agents how to work (registerInstructions), notify the owner (registerNotices), work out why a computer is offline, an agent is unavailable or a session's agent cannot reach the tools.
What it loads into context
Frontmatter
179 tokensAlways available to the agent
SKILL.md
1,793 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Key rules
- Setup
- Verification
- Troubleshooting
Files
SKILL.mdcore8,940 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-agents
When your agent uses it
Register the Agents plugin in a NocoBase App and configure it (agents.* in config.yml), contribute subjects, scopes, business actions, agent defaults, the App's own agents, CLI commands and reports through agentsToken, enable the agents discovered from runners, configure OnlineAgentService and OnlineAgentConfigurator for SDK chats, business tools and native web search, set up model services for the App's own model calls, connect runners (registration tokens, protocol, upgrade_required), build and serve the CLI and runner tarballs (pnpm nocobase cli build, --runner), or work out why a run, a runner or a model fails.
What it loads into context
Frontmatter
156 tokensAlways available to the agent
SKILL.md
1,798 tokensWhen the skill is activated
Reference documents
23,554 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Key rules
- References
Files
../../docs/native-sandbox.mddoc10,005 bytesSKILL.mdcore10,321 bytesSKILL.mdcore10,321 bytesreferences/agents.mddoc4,086 bytesreferences/distribution.mddoc9,942 bytesreferences/extension-points.mddoc15,943 bytesreferences/model-services.mddoc2,352 bytesreferences/online-agent.mddoc47,534 bytesreferences/runners.mddoc13,522 bytesreferences/setup-and-config.mddoc5,835 bytesreferences/variables-skills-usage.mddoc3,632 bytesreferences/verification-and-troubleshooting.mddoc11,064 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-api-keys
When your agent uses it
Register the API Keys plugin in a NocoBase App, let scripts and integrations call the App's API with an x-api-key header, or work out why a key is rejected.
What it loads into context
Frontmatter
63 tokensAlways available to the agent
SKILL.md
2,209 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Public surfaces
- Register it
- Call the API with a key
- What a key can reach, and what it cannot
- Other constraints
- Ownership
- Verification
- Trusted server extensions
Files
SKILL.mdcore9,788 bytesSKILL.mdcore9,788 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-authentication
When your agent uses it
Build authentication requirements in a NocoBase 3 application: protect API routes and pages with the session, read and refresh the session in the browser, customize the login, registration and password pages, add sign-in methods such as social login, OIDC or a custom Better Auth plugin, enable official Better Auth plugins (device login for a CLI, bearer tokens, organizations, two-factor, passkeys) with the migration their tables need, manage account lifecycle from server code, and configure secrets, cookies and shared storage for deployment.
What it loads into context
Frontmatter
148 tokensAlways available to the agent
SKILL.md
2,578 tokensWhen the skill is activated
Reference documents
12,755 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Public surfaces
- Choose the task path
- Ownership
- Reversible UI customization
- Constraints
- Verification
- Trusted plugin API
- Initial administrator
- Trusted server session creation
Files
SKILL.mdcore12,595 bytesSKILL.mdcore12,595 bytesSKILL.mdcore12,595 bytesSKILL.mdcore12,595 bytesreferences/adding-sign-in-methods.mddoc8,402 bytesreferences/authentication-email.mddoc6,069 bytesreferences/better-auth-plugins.mddoc7,906 bytesreferences/client-session-and-pages.mddoc12,375 bytesreferences/custom-better-auth-plugin.mddoc8,576 bytesreferences/protecting-routes.mddoc6,176 bytesreferences/user-lifecycle-and-deployment.mddoc11,090 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-authorization
When your agent uses it
Design and implement NocoBase 3 business permissions: job responsibilities, pages, business actions, fields, record scopes, relations, team inheritance, permission assignments, administration and inspection. Use when building a system or feature whose users have different access.
What it loads into context
Frontmatter
87 tokensAlways available to the agent
SKILL.md
2,691 tokensWhen the skill is activated
Reference documents
19,715 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Identify model and configuration changes
- Start from business responsibilities
- Choose the implementation reference
- Implement in this order
- Enforcement rules
- Completion evidence
Files
SKILL.mdcore16,672 bytesSKILL.mdcore16,672 bytesreferences/business-module.mddoc15,620 bytesreferences/client-development.mddoc16,635 bytesreferences/code-and-seeds.mddoc14,220 bytesreferences/core-api.mddoc8,622 bytesreferences/fluent-registration.mddoc6,704 bytesreferences/optional-capabilities.mddoc2,106 bytesreferences/repository-routes.mddoc11,973 bytesreferences/runtime-api.mddoc15,660 bytesreferences/subjects-and-administration.mddoc13,271 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-authz-default-access
When your agent uses it
Design, implement and verify default access for NocoBase 3 business operations, including named data scopes and production administration.
What it loads into context
Frontmatter
38 tokensAlways available to the agent
SKILL.md
1,558 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Development workflow
- Install
- Service API
- Installation seeds
- Administration and acceptance
Files
SKILL.mdcore7,635 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-authz-restriction-rules
When your agent uses it
Design, implement and verify restriction rules for NocoBase 3 business operations, including named data scopes and production administration.
What it loads into context
Frontmatter
41 tokensAlways available to the agent
SKILL.md
1,684 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Development workflow
- Install
- Service API
- Installation seeds
- Administration and acceptance
Files
SKILL.mdcore8,439 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-authz-sharing-rules
When your agent uses it
Design, implement and verify sharing rules for NocoBase 3 business operations, including named data scopes and production administration.
What it loads into context
Frontmatter
39 tokensAlways available to the agent
SKILL.md
1,756 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Development workflow
- Install
- Service API
- Installation seeds
- Administration and acceptance
Files
SKILL.mdcore8,761 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-concurrency
When your agent uses it
Configure and consume NocoBase 3 process-local Mutex locks, strict named managers, original service Token, optional TTL, public implementation extensions and application-owned shutdown.
What it loads into context
Frontmatter
44 tokensAlways available to the agent
SKILL.md
1,080 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Install and register
- Consume the original service
- Lifecycle and extensions
- Verify
Files
SKILL.mdcore6,004 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-database-explorer
When your agent uses it
Browse an application's database connections, collections, and fields read-only through the Database Explorer endpoints, and grant access to them.
What it loads into context
Frontmatter
38 tokensAlways available to the agent
SKILL.md
1,054 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Use this Skill when
- Public surfaces
- Prerequisites
- App workflow
- Ownership
Files
SKILL.mdcore5,336 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-demo-mode
When your agent uses it
Build, enable or operate a dedicated NocoBase 3 demo deployment with @nocobase/app-plugin-demo-mode: a public, shared demo site whose fictional data is generated, cleared and reset, with quick visitor sign-in, write protection and optional model or Agent simulation (公开演示站、只读演示、定时重置的演示环境、 Demo Mode). Also use when changing business collections, external integrations or background jobs in an application that already depends on this plugin, so its demo dataset, cleanup and adapters stay complete. Not for example records (use the application development Skill's sample-data workflow), ordinary trial, staging or customer deployments, third-party sandbox credentials, or an in-app presentation/display mode feature.
What it loads into context
Frontmatter
178 tokensAlways available to the agent
SKILL.md
3,393 tokensWhen the skill is activated
Reference documents
8,461 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Check that this Skill applies
- Keep protection proportionate
- Integration workflow
- Maintain an application that uses Demo Mode
- Required host capabilities
- Confirm the dedicated deployment
- Enable the deployment
- Management access
- References by task
Scripts executed separately
assets/minimal-demo/client/pages/demo-projects.tsxassets/minimal-demo/database/main/migrations/202610220001_example_demo_projects.tsassets/minimal-demo/server/demo/business.tsassets/minimal-demo/server/demo/dataset.tsassets/minimal-demo/server/providers/demo.tsassets/minimal-demo/server/routes/demo-projects.ts
Files
SKILL.mdcore17,696 bytesassets/minimal-demo/client/pages/demo-projects.tsxruns1,184 bytesassets/minimal-demo/database/main/migrations/202610220001_example_demo_projects.tsruns1,063 bytesassets/minimal-demo/server/demo/business.tsruns1,301 bytesassets/minimal-demo/server/demo/dataset.tsruns2,907 bytesassets/minimal-demo/server/providers/demo.tsruns878 bytesassets/minimal-demo/server/routes/demo-projects.tsruns1,887 bytesassets/minimal-demo/tsconfig.jsonasset158 bytesreferences/adapting-data.mddoc7,357 bytesreferences/integration-checklist.mddoc2,657 bytesreferences/minimal-example.mddoc12,460 bytesreferences/policies.mddoc9,983 bytesreferences/simulation.mddoc6,993 bytesreferences/visitor-entry.mddoc6,325 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-file
When your agent uses it
Add file collections, uploads, downloads, DOCX/XLSX/PPTX previews, business attachments, and editable UI Library file components to a NocoBase 3 App using the public File Repository services.
What it loads into context
Frontmatter
53 tokensAlways available to the agent
SKILL.md
4,748 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Find and reuse the preview UI first
- Work incrementally
- Collection
- API routes
- Server and Client services
- UI Library components
- Verify and handle failures
Files
SKILL.mdcore23,450 bytesSKILL.mdcore23,450 bytesSKILL.mdcore23,450 bytesSKILL.mdcore23,450 bytesSKILL.mdcore23,450 bytesSKILL.mdcore23,450 bytesSKILL.mdcore23,450 bytesSKILL.mdcore23,450 bytesSKILL.mdcore23,450 bytesSKILL.mdcore23,450 bytesSKILL.mdcore23,450 bytesSKILL.mdcore23,450 bytesSKILL.mdcore23,450 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-foundation
When your agent uses it
Use when an application should show its administrators which NocoBase Core capabilities it uses (the App Foundation page), when registering or moving that page, or when asked why a capability shows as in use, needing setup, not used or undetermined there. Not for business permissions or for building other admin pages.
What it loads into context
Frontmatter
73 tokensAlways available to the agent
SKILL.md
4,903 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Use this Skill when
- Public surfaces
- Prerequisites
- App workflow
- Reading a status
- Verification
- Reading the provider inventory
- Dynamic registration coverage
- Business module matrix
- Sidebar grouping
- Large catalogs and count freshness
- Static association reuse and waiting feedback
Files
SKILL.mdcore27,857 bytesSKILL.mdcore27,857 bytesSKILL.mdcore27,857 bytesSKILL.mdcore27,857 bytesSKILL.mdcore27,857 bytesSKILL.mdcore27,857 bytesSKILL.mdcore27,857 bytesSKILL.mdcore27,857 bytesSKILL.mdcore27,857 bytesSKILL.mdcore27,857 bytesSKILL.mdcore27,857 bytesSKILL.mdcore27,857 bytesSKILL.mdcore27,857 bytesSKILL.mdcore27,857 bytesSKILL.mdcore27,857 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-i18n
When your agent uses it
Use when adding or changing user-facing text in a NocoBase application or plugin: writing locale files, wiring a package's locales for the first time, translating a component or a menu title, naming a namespace, translating server responses, errors and outbound mail, or adding a language. Not for building page UI around the text (nocobase-app-development) or scaffolding a new plugin (nocobase-app-plugin-development); those Skills hand translation work here.
What it loads into context
Frontmatter
216 tokensAlways available to the agent
SKILL.md
3,758 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Wiring locales into a package for the first time
- Adding a string
- Naming translation keys
- Naming a namespace
- Menu and breadcrumb titles
- Translating on the server
- Adding a language
- Rewording a plugin's text
Files
SKILL.mdcore16,226 bytesSKILL.mdcore16,226 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-mail
When your agent uses it
Use when integrating the NocoBase 3 Mail plugin into an application: configure Gmail, Microsoft 365, or IMAP/SMTP accounts, embed mail UI, send from business code, or diagnose synchronization and delivery.
What it loads into context
Frontmatter
119 tokensAlways available to the agent
SKILL.md
1,880 tokensWhen the skill is activated
Reference documents
19,631 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Contents
Files
SKILL.mdcore10,340 bytesreferences/client-integration.mddoc23,124 bytesreferences/configuration-and-accounts.mddoc19,499 bytesreferences/http-api.mddoc29,249 bytesreferences/public-api.mddoc20,528 bytesreferences/sending-and-drafts.mddoc7,327 bytesreferences/synchronization-and-diagnostics.mddoc13,075 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-notification-in-app
When your agent uses it
Use when agents need to register, verify, or diagnose the NocoBase durable in-app inbox, its development-only Client page, or realtime refresh behavior.
What it loads into context
Frontmatter
105 tokensAlways available to the agent
SKILL.md
1,761 tokensWhen the skill is activated
Reference documents
3,575 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
../../README.mddoc10,241 bytesSKILL.mdcore9,574 bytesreferences/inbox-integration.mddoc7,361 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-notification-web-push
When your agent uses it
Integrate encrypted browser push subscriptions and the Web Push notification channel in a NocoBase 3 application.
What it loads into context
Frontmatter
36 tokensAlways available to the agent
SKILL.md
410 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore2,179 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-notification
When your agent uses it
Use when agents need to integrate, configure, send, inspect, or diagnose NocoBase notifications based on app-plugin-notification.
What it loads into context
Frontmatter
143 tokensAlways available to the agent
SKILL.md
742 tokensWhen the skill is activated
Reference documents
6,660 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- High-impact actions and rollback
Files
SKILL.mdcore4,051 bytesreferences/channel-and-provider-extensions.mddoc14,670 bytesreferences/delivery-diagnostics.mddoc6,642 bytesreferences/integration-and-configuration.mddoc8,802 bytesreferences/notification-concepts.mddoc2,230 bytesreferences/sending-notifications.mddoc2,770 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-projects
When your agent uses it
Register the Projects plugin in a NocoBase App, call its /api/projects API for projects, issues, their fixed statuses, labels and members, grant its permissions, or work out why a projects request is rejected.
What it loads into context
Frontmatter
71 tokensAlways available to the agent
SKILL.md
3,631 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Public surfaces
- Prerequisites
- Permissions and constraints
- Verification
Files
SKILL.mdcore15,794 bytesSKILL.mdcore15,794 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-scheduler
When your agent uses it
Develop scheduled tasks in NocoBase 3 that business administrators need to view and track through the application UI. Define schedules in code, register the target a schedule points at, integrate execution status, and report completion. Do not use Scheduler to manage tasks that do not need UI visibility.
What it loads into context
Frontmatter
83 tokensAlways available to the agent
SKILL.md
1,030 tokensWhen the skill is activated
Reference documents
7,022 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Decide Whether to Use Scheduler
- Then Choose the Execution Model
- Read by Task
- Development Loop
Files
SKILL.mdcore6,034 bytesSKILL.mdcore6,034 bytesreferences/definitions.mddoc8,341 bytesreferences/operations.mddoc14,744 bytesreferences/targets.mddoc16,759 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-template-print
When your agent uses it
Use when implementing or debugging NocoBase 3 template printing with DOCX, XLSX, or PPTX templates and business data, including record/list output, attachments, QR codes, or PDF conversion; ordinary browser page printing is outside this workflow.
What it loads into context
Frontmatter
139 tokensAlways available to the agent
SKILL.md
2,294 tokensWhen the skill is activated
Reference documents
5,277 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore13,035 bytesSKILL.mdcore13,035 bytesreferences/implementation.mddoc7,886 bytesreferences/office-processing.mddoc8,002 bytesreferences/rendering.mddoc8,118 bytesreferences/verification.mddoc5,657 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-users
When your agent uses it
Integrate the Users plugin into a NocoBase App, build a user management page on its API and configure its permissions, or add an application-owned role scope through the public Server contracts.
What it loads into context
Frontmatter
60 tokensAlways available to the agent
SKILL.md
2,485 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Public surfaces
- Register the plugin
- Add an application role scope
- Invite users
- Ownership
- Permissions and constraints
- Verification
- Creation defaults and existing applications
- Invitation email
Files
SKILL.mdcore12,144 bytesSKILL.mdcore12,144 bytesSKILL.mdcore12,144 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-__NOCOBASE_SHORT_NAME__
When your agent uses it
Development draft for the plugin's App-facing capabilities.
What it loads into context
Frontmatter
27 tokensAlways available to the agent
SKILL.md
153 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Use this Skill when
- Public surfaces
- Prerequisites
- App workflow
- Ownership
- Permissions and constraints
- Verification
Files
SKILL.mdcore857 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-installer
When your agent uses it
Deploy a built NocoBase 3 application locally or over SSH to an offline Linux server, for production, with `@nocobase/app-installer` from the deployment archive `pnpm build --tar` writes, then upgrade, roll back and check it. Use when the user asks to deploy an application to production or a server, to upgrade or roll back such an installation, or when the directory holds an `installer.json` written by app-installer. Not for creating a project to develop, which is the `nocobase-create-app` Skill.
What it loads into context
Frontmatter
125 tokensAlways available to the agent
SKILL.md
3,788 tokensWhen the skill is activated
Reference documents
1,365 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Run it
- Choose the route
- Choose where the installer runs
- Build the archive
- Install
- Several installations on one machine
- Status
- Upgrade and roll back
- Recover an interrupted operation
- Change the origin or port
- Keep the data intact
Files
SKILL.mdcore17,662 bytesSKILL.mdcore17,662 bytesSKILL.mdcore17,662 bytesSKILL.mdcore17,662 bytesSKILL.mdcore17,662 bytesreferences/remote-deployment.mddoc6,720 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-app-plugin-development
When your agent uses it
Migrate an older global NocoBase 3 plugin development Skill to the version supplied by the current App. Use when this legacy global entry is selected; it forwards to project guidance and contains no plugin implementation instructions.
What it loads into context
Frontmatter
54 tokensAlways available to the agent
SKILL.md
525 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore2,618 bytesSKILL.mdcore2,618 bytesSKILL.mdcore2,618 bytesSKILL.mdcore2,618 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnocobase-create-app
When your agent uses it
Create a NocoBase 3 project to develop, locally, with `pnpm create @nocobase/app@beta`, configure it with `pnpm nocobase config init`, `config set` and `config check`, start it, and hand over to the application's own guidance. Use when the user asks to install, create, set up or try NocoBase to develop with, and the working directory holds no NocoBase application yet. Not for deploying to production, which belongs to the `nocobase-app-installer` Skill. Not for NocoBase 2 or the `nb` CLI, and not for work inside an existing application, which carries its own AGENTS.md and Skills.
What it loads into context
Frontmatter
155 tokensAlways available to the agent
SKILL.md
3,286 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Before you start
- Create
- Configure
- Start
- Secrets
- Finish
- Troubleshooting
Files
SKILL.mdcore15,295 bytesSKILL.mdcore15,295 bytesSKILL.mdcore15,295 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubSkills included
- nb-studio-cli
- nocobase-app-development
- shadcn
- nocobase-app-plugin-development
- nocobase-app-upgrade
- nocobase-deployment
- nocobase-app-plugin-cli-example
- nocobase-app-plugin-repository-example
- nocobase-app-plugin-skills-example
- nocobase-db
- nocobase-drive
- nocobase-realtime
- nocobase-app-plugin-agent-sessions
- nocobase-app-plugin-agents
- nocobase-app-plugin-api-keys
- nocobase-app-plugin-authentication
- nocobase-app-plugin-authorization
- nocobase-app-plugin-authz-default-access
- nocobase-app-plugin-authz-restriction-rules
- nocobase-app-plugin-authz-sharing-rules
- nocobase-app-plugin-concurrency
- nocobase-app-plugin-database-explorer
- nocobase-app-plugin-demo-mode
- nocobase-app-plugin-file
- nocobase-app-plugin-foundation
- nocobase-app-plugin-i18n
- nocobase-app-plugin-mail
- nocobase-app-plugin-notification-in-app
- nocobase-app-plugin-notification-web-push
- nocobase-app-plugin-notification
- nocobase-app-plugin-projects
- nocobase-app-plugin-scheduler
- nocobase-app-plugin-template-print
- nocobase-app-plugin-users
- nocobase-app-plugin-__NOCOBASE_SHORT_NAME__
- nocobase-app-installer
- nocobase-app-plugin-development
- nocobase-create-app
Repository facts
- License
- No license detected
- Created
- Oct 24, 2020
- Last pushed
- Nov 6, 2026
- Forks
- 2,954
- Open issues
- 114
- Project activity
- Active
Rank over the last 12 weeks
Now #82 · best #69 · down 1 in 30 days
- #77 from Sep 5 to Sep 13
- #78 from Sep 14 to Sep 20
- #79 from Sep 21 to Sep 29
- #80 from Sep 30 to Oct 4
- #81 from Oct 5 to Oct 24
- #82 since Nov 3
8 earlier periods
- #66 from Aug 7 to Aug 10
- #69 from Aug 11 to Aug 19
- #70 from Aug 20 to Aug 21
- #71 on Aug 22
- #73 from Aug 23 to Aug 24
- #74 from Aug 25 to Aug 26
- #75 from Aug 27 to Sep 1
- #76 from Sep 2 to Sep 4
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 3, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 130 notes
packages/app/app-skills/skills/nocobase-app-development/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-development/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-development/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-development/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-development/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-development/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-development/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-development/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-development/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-development/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-development/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-development/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-development/references/frontend/references/ui-library.md:161Analysis incomplete: physical or joined line exceeds character limitpackages/app/app-skills/skills/nocobase-app-development/references/frontend/references/ui-library.md:159Analysis incomplete: physical or joined line exceeds character limitpackages/app/app-skills/skills/nocobase-app-development/references/frontend/shadcn/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-development/references/frontend/shadcn/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-development/references/frontend/shadcn/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-development/references/frontend/shadcn/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-plugin-development/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackages/app/app-skills/skills/nocobase-app-plugin-development/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- 6 broad permissionsin 6 files: shadcn/SKILL.md:1 nocobase-app-plugin-i18n/SKILL.md:1 nocobase-app-plugin-mail/SKILL.md:1 and 3 more
- 6 dangerous shell commandsin 5 files: nocobase-app-plugin-agents/references/distribution.md:50 nocobase-app-development/references/database-connections.md:198 nocobase-app-development/references/frontend/ui-workflow.md:151 and 2 more
- 556 network referencesin 60 files: nocobase-app-development/assets/customer-contacts-example/tests/server/customer-contacts.test.ts:13 nocobase-app-development/assets/business-examples/procurement/tests/server/procurement.test.ts:17 nocobase-app-development/assets/list-edit-example/tests/server/skill-projects.test.ts:12 and 57 more
- No hidden or obfuscated text
- No instruction overrides
- 109 executable scriptsin 109 files: nocobase-app-development/assets/business-examples/onboarding/cli/commands/onboarding-reset.ts:1 nocobase-app-development/assets/business-examples/onboarding/client/pages/onboarding/choice.tsx:1 nocobase-app-development/assets/business-examples/onboarding/client/pages/onboarding/index.tsx:1 and 106 more
- 12 references to secretsin 8 files: nocobase-app-development/references/testing/playwright/login.md:3 nocobase-app-plugin-authentication/references/adding-sign-in-methods.md:56 shadcn/mcp.md:95 and 5 more
- No requests to vote in Hot
Show all 689 signals by file
packages/app/app-skills/skills/nocobase-app-development/SKILL.md
- Network accessline 111
[Credential-related source omitted]
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/cli/commands/onboarding-reset.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/client/pages/onboarding/choice.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/client/pages/onboarding/index.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/client/pages/onboarding/locales.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/client/pages/onboarding/wizard.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/database/main/migrations/202611050001_create_onboarding.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/database/main/seeds/202611050001_onboarding.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/database/main/seeds/202611050002_onboarding_samples.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/server/lifecycles/onboarding.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/server/providers/onboarding-registration.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/server/providers/onboarding-reset.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/server/providers/onboarding.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/server/routes/onboarding.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/shared/onboarding.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/tests/client/onboarding.test.tsx
- Executable scriptline 1
Executable file - Network accessline 18
headers: { 'content-type': 'application/json', origin: 'http://localhost', - Network accessline 19
'content-type': 'application/json', origin: 'http://localhost', 'Idempotency-Key': `${Date.now()}.${randomUUID()}`, - Network accessline 20
origin: 'http://localhost', - Network accessline 312
}, }); const response = await session.fetch('/onboarding', write(complete)); - Network accessline 313
}); const response = await session.fetch('/onboarding', write(complete)); expect(response.status).toBe(200); - Network accessline 314
const response = await session.fetch('/onboarding', write(complete)); - Network accessline 385
).toBe(1); const detail = ( await (await view.session.fetch(`/onboarding/${id!}`)).json() - Network accessline 386
const detail = ( await (await view.session.fetch(`/onboarding/${id!}`)).json() ).data as OnboardingDetail; - Network accessline 387
await (await view.session.fetch(`/onboarding/${id!}`)).json()
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/tests/database/onboarding.test.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/tests/playwright/onboarding.test.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts
- Executable scriptline 1
Executable file - Network accessline 26
config: { logging: { enabled: false }, app: { publicOrigin: 'http://localhost' }, - Network accessline 27
logging: { enabled: false }, app: { publicOrigin: 'http://localhost' }, auth: { - Network accessline 28
app: { publicOrigin: 'http://localhost' }, - Network accessline 41
headers: { 'content-type': 'application/json', origin: 'http://localhost', - Network accessline 42
'content-type': 'application/json', origin: 'http://localhost', 'Idempotency-Key': key, - Network accessline 43
origin: 'http://localhost', - Network accessline 102
session = users.owner, key?: string, ) => session.fetch('/onboarding', write(body, 'POST', key)); - Network accessline 103
key?: string, ) => session.fetch('/onboarding', write(body, 'POST', key)); const get = async ( - Network accessline 104
) => session.fetch('/onboarding', write(body, 'POST', key)); - Network accessline 107
session = users.owner, ): Promise<OnboardingDetail> => (await (await session.fetch(`/onboarding/${id}`)).json()).data; - Network accessline 108
): Promise<OnboardingDetail> => (await (await session.fetch(`/onboarding/${id}`)).json()).data; const submit = async ( - Network accessline 109
(await (await session.fetch(`/onboarding/${id}`)).json()).data; - Network accessline 114
key?: string, ) => session.fetch( - Network accessline 115
) => session.fetch( `/onboarding/${id}/fire`, - Network accessline 116
session.fetch( - Network accessline 130
] as const) expect((await app.request(url, init)).status).toBe(401); expect((await f.users.member.fetch('/onboarding')).status).toBe(403); - Network accessline 131
expect((await app.request(url, init)).status).toBe(401); expect((await f.users.member.fetch('/onboarding')).status).toBe(403); expect( - Network accessline 132
expect((await f.users.member.fetch('/onboarding')).status).toBe(403); - Network accessline 133
expect( (await f.users.viewer.fetch('/onboarding/candidates?kind=departments')) .status, - Network accessline 134
(await f.users.viewer.fetch('/onboarding/candidates?kind=departments')) - Network accessline 140
const version = (await f.get(id)).record.lifecycleVersion; const administrator = await signIn(app, DEFAULT_ADMIN_CREDENTIALS); expect((await administrator.fetch(`/onboarding/${id}`)).status).toBe(404); - Network accessline 141
const administrator = await signIn(app, DEFAULT_ADMIN_CREDENTIALS); expect((await administrator.fetch(`/onboarding/${id}`)).status).toBe(404); for (const name of ['other', 'viewer']) { - Network accessline 142
expect((await administrator.fetch(`/onboarding/${id}`)).status).toBe(404); - Network accessline 143
for (const name of ['other', 'viewer']) { expect((await f.users[name].fetch(`/onboarding/${id}`)).status).toBe(404); expect( - Network accessline 144
expect((await f.users[name].fetch(`/onboarding/${id}`)).status).toBe(404); - Network accessline 145
expect( ( await f.users[name].fetch( - Network accessline 146
( await f.users[name].fetch( `/onboarding/${id}`, - Network accessline 147
await f.users[name].fetch( - Network accessline 155
); expect( (await (await f.users[name].fetch('/onboarding')).json()).data, - Network accessline 156
expect( (await (await f.users[name].fetch('/onboarding')).json()).data, ).toEqual([]); - Network accessline 157
(await (await f.users[name].fetch('/onboarding')).json()).data, - Network accessline 165
expect( ( await f.users.owner.fetch( - Network accessline 166
( await f.users.owner.fetch( '/onboarding', - Network accessline 167
await f.users.owner.fetch( - Network accessline 182
expect( ( await f.users.owner.fetch( - Network accessline 183
( await f.users.owner.fetch( `/onboarding/${id}`, - Network accessline 184
await f.users.owner.fetch( - Network accessline 271
( await ( await f.users.viewer.fetch('/onboarding?status=submitted&q=Example') - Network accessline 272
await ( await f.users.viewer.fetch('/onboarding?status=submitted&q=Example') ).json() - Network accessline 273
await f.users.viewer.fetch('/onboarding?status=submitted&q=Example') - Network accessline 295
( await ( await f.users.owner.fetch('/onboarding/candidates?kind=departments') - Network accessline 296
await ( await f.users.owner.fetch('/onboarding/candidates?kind=departments') ).json() - Network accessline 297
await f.users.owner.fetch('/onboarding/candidates?kind=departments') - Network accessline 328
expect( ( await f.users.owner.fetch( - Network accessline 329
( await f.users.owner.fetch( `/onboarding/${id}`, - Network accessline 330
await f.users.owner.fetch( - Network accessline 336
expect( ( await f.users.owner.fetch( - Network accessline 337
( await f.users.owner.fetch( `/onboarding/${id}`, - Network accessline 338
await f.users.owner.fetch( - Network accessline 343
).toBe('true'); expect( (await f.users.owner.fetch(`/onboarding/${id}`, write(update, 'PATCH'))) - Network accessline 344
expect( (await f.users.owner.fetch(`/onboarding/${id}`, write(update, 'PATCH'))) .status, - Network accessline 345
(await f.users.owner.fetch(`/onboarding/${id}`, write(update, 'PATCH'))) - Network accessline 359
expect( ( await f.users.owner.fetch( - Network accessline 360
( await f.users.owner.fetch( `/onboarding/${id}`, - Network accessline 361
await f.users.owner.fetch( - Network accessline 420
const editRace = await Promise.all([ f.submit(editId, editVersion), f.users.owner.fetch( - Network accessline 421
f.submit(editId, editVersion), f.users.owner.fetch( `/onboarding/${editId}`, - Network accessline 422
f.users.owner.fetch( - Network accessline 465
expect( ( await f.users.owner.fetch( - Network accessline 466
( await f.users.owner.fetch( `/onboarding/${id}`, - Network accessline 467
await f.users.owner.fetch(
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/cli/commands/procurement-reset.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/client/pages/procurement/detail.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/client/pages/procurement/index.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/client/pages/procurement/locales.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/client/pages/procurement/reference.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/database/main/migrations/202611040001_create_procurement.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/database/main/seeds/202611040001_procurement.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/database/main/seeds/202611040002_procurement_samples.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/server/lifecycles/procurement.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/server/providers/procurement-registration.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/server/providers/procurement-reset.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/server/providers/procurement.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/server/routes/procurement.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/shared/procurement.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/tests/client/procurement.test.tsx
- Executable scriptline 1
Executable file - Network accessline 45
headers: { 'content-type': 'application/json', origin: 'http://localhost', - Network accessline 46
'content-type': 'application/json', origin: 'http://localhost', 'Idempotency-Key': `${Date.now()}.${randomUUID()}`, - Network accessline 47
origin: 'http://localhost', - Network accessline 52
const detail = async () => ( (await (await owner.fetch(`/procurement/${id}`)).json()) as { - Network accessline 53
( (await (await owner.fetch(`/procurement/${id}`)).json()) as { data: ProcurementDetail; - Network accessline 54
(await (await owner.fetch(`/procurement/${id}`)).json()) as { - Network accessline 60
expect( ( await reviewer.fetch( - Network accessline 61
( await reviewer.fetch( `/procurement/${id}/fire`, - Network accessline 62
await reviewer.fetch( - Network accessline 119
}, }); const created = await owner.fetch( - Network accessline 120
}); const created = await owner.fetch( '/procurement', - Network accessline 121
const created = await owner.fetch( - Network accessline 134
expect( ( await owner.fetch( - Network accessline 135
( await owner.fetch( `/procurement/${id}/fire`, - Network accessline 136
await owner.fetch( - Network accessline 212
expect( ( await owner!.fetch( - Network accessline 213
( await owner!.fetch( `/procurement/${id!}`, - Network accessline 214
await owner!.fetch(
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/tests/database/procurement.test.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/tests/playwright/procurement.test.ts
- Executable scriptline 1
Executable file - Network accessline 296
await owner.route(detailApi, async (route) => { if (route.request().method() !== 'GET') return route.continue(); const response = await route.fetch(); - Network accessline 297
if (route.request().method() !== 'GET') return route.continue(); const response = await route.fetch(); refreshStarted.resolve(); - Network accessline 298
const response = await route.fetch();
packages/app/app-skills/skills/nocobase-app-development/assets/business-examples/procurement/tests/server/procurement.test.ts
- Executable scriptline 1
Executable file - Network accessline 17
config: { logging: { enabled: false }, app: { publicOrigin: 'http://localhost' }, - Network accessline 18
logging: { enabled: false }, app: { publicOrigin: 'http://localhost' }, auth: { - Network accessline 19
app: { publicOrigin: 'http://localhost' }, - Network accessline 32
headers: { 'content-type': 'application/json', origin: 'http://localhost', - Network accessline 33
'content-type': 'application/json', origin: 'http://localhost', 'Idempotency-Key': key, - Network accessline 34
origin: 'http://localhost', - Network accessline 91
}; const create = async (body = input, session = users.owner, key?: string) => session.fetch('/procurement', write(body, 'POST', key)); - Network accessline 92
const create = async (body = input, session = users.owner, key?: string) => session.fetch('/procurement', write(body, 'POST', key)); const get = async (id: string, session = users.owner) => - Network accessline 93
session.fetch('/procurement', write(body, 'POST', key)); - Network accessline 94
const get = async (id: string, session = users.owner) => ( (await (await session.fetch(`/procurement/${id}`)).json()) as { - Network accessline 95
( (await (await session.fetch(`/procurement/${id}`)).json()) as { data: ProcurementDetail; - Network accessline 96
(await (await session.fetch(`/procurement/${id}`)).json()) as { - Network accessline 105
requestId = randomUUID(), ) => session.fetch( - Network accessline 106
) => session.fetch( `/procurement/${id}/fire`, - Network accessline 107
session.fetch( - Network accessline 117
const f = await fixture(testApp); expect((await testApp.request('/procurement')).status).toBe(401); expect((await f.users.member.fetch('/procurement')).status).toBe(403); - Network accessline 118
expect((await testApp.request('/procurement')).status).toBe(401); expect((await f.users.member.fetch('/procurement')).status).toBe(403); expect( - Network accessline 119
expect((await f.users.member.fetch('/procurement')).status).toBe(403); - Network accessline 120
expect( (await f.users.member.fetch('/procurement?status=invalid')).status, ).toBe(403); - Network accessline 121
(await f.users.member.fetch('/procurement?status=invalid')).status, - Network accessline 122
).toBe(403); expect((await f.users.member.fetch('/procurement', write({}))).status).toBe( 403, - Network accessline 123
expect((await f.users.member.fetch('/procurement', write({}))).status).toBe( - Network accessline 125
); expect( (await f.users.reviewer.fetch('/procurement/candidates?kind=materials')) - Network accessline 126
expect( (await f.users.reviewer.fetch('/procurement/candidates?kind=materials')) .status, - Network accessline 127
(await f.users.reviewer.fetch('/procurement/candidates?kind=materials')) - Network accessline 129
).toBe(403); expect( (await f.users.reviewer.fetch('/procurement/candidates?kind=invalid')) - Network accessline 130
expect( (await f.users.reviewer.fetch('/procurement/candidates?kind=invalid')) .status, - Network accessline 131
(await f.users.reviewer.fetch('/procurement/candidates?kind=invalid')) - Network accessline 134
const id = (await (await f.create()).json()).data.id; for (const actor of ['other', 'reviewer', 'otherReviewer', 'member']) expect((await f.users[actor].fetch(`/procurement/${id}`)).status).toBe( - Network accessline 135
for (const actor of ['other', 'reviewer', 'otherReviewer', 'member']) expect((await f.users[actor].fetch(`/procurement/${id}`)).status).toBe( actor === 'member' ? 403 : 404, - Network accessline 136
expect((await f.users[actor].fetch(`/procurement/${id}`)).status).toBe( - Network accessline 138
); expect( (await (await f.users.other.fetch('/procurement')).json()).data, - Network accessline 139
expect( (await (await f.users.other.fetch('/procurement')).json()).data, ).toEqual([]); - Network accessline 140
(await (await f.users.other.fetch('/procurement')).json()).data, - Network accessline 147
expect( ( await f.users.owner.fetch( - Network accessline 148
( await f.users.owner.fetch( '/procurement', - Network accessline 149
await f.users.owner.fetch( - Network accessline 159
expect( ( await f.users.owner.fetch( - Network accessline 160
( await f.users.owner.fetch( `/procurement/${id}`, - Network accessline 161
await f.users.owner.fetch( - Network accessline 194
} const candidates = await ( await f.users.owner.fetch( - Network accessline 195
const candidates = await ( await f.users.owner.fetch( '/procurement/candidates?kind=materials&q=Note&active=true', - Network accessline 196
await f.users.owner.fetch( - Network accessline 214
( await ( await f.users.owner.fetch( - Network accessline 215
await ( await f.users.owner.fetch( '/procurement/candidates?kind=suppliers&q=Restricted', - Network accessline 216
await f.users.owner.fetch( - Network accessline 223
( await ( await f.users.owner.fetch( - Network accessline 224
await ( await f.users.owner.fetch( '/procurement/candidates?kind=materials&active=false', - Network accessline 225
await f.users.owner.fetch( - Network accessline 237
expect( ( await f.users.other.fetch( - Network accessline 238
( await f.users.other.fetch( `/procurement/${id}`, - Network accessline 239
await f.users.other.fetch( - Network accessline 270
( await ( await f.users.owner.fetch( - Network accessline 271
await ( await f.users.owner.fetch( '/procurement?q=Office&status=submitted&pageSize=1', - Network accessline 272
await f.users.owner.fetch( - Network accessline 277
).toMatchObject({ total: 1, pageSize: 1 }); expect( (await (await f.users.owner.fetch('/procurement?status=draft')).json()) - Network accessline 278
expect( (await (await f.users.owner.fetch('/procurement?status=draft')).json()) .data, - Network accessline 279
(await (await f.users.owner.fetch('/procurement?status=draft')).json()) - Network accessline 283
expect( ( await f.users.owner.fetch( - Network accessline 284
( await f.users.owner.fetch( `/procurement/${id}`, - Network accessline 285
await f.users.owner.fetch( - Network accessline 316
expect( ( await f.users.owner.fetch( - Network accessline 317
( await f.users.owner.fetch( `/procurement/${id}`, - Network accessline 318
await f.users.owner.fetch( - Network accessline 365
expect( ( await f.users.owner.fetch( - Network accessline 366
( await f.users.owner.fetch( `/procurement/${id}`, - Network accessline 367
await f.users.owner.fetch( - Network accessline 429
]); expect(submissions.filter((r) => r.ok)).toHaveLength(1); const stale = await f.users.owner.fetch( - Network accessline 430
expect(submissions.filter((r) => r.ok)).toHaveLength(1); const stale = await f.users.owner.fetch( `/procurement/${id}`, - Network accessline 431
const stale = await f.users.owner.fetch( - Network accessline 527
})), }); const response = await f.users.owner.fetch( - Network accessline 528
}); const response = await f.users.owner.fetch( '/procurement/candidates?kind=reviewers', - Network accessline 529
const response = await f.users.owner.fetch( - Network accessline 570
expect( ( await f.users.owner.fetch( - Network accessline 571
( await f.users.owner.fetch( `/procurement/${id}`, - Network accessline 572
await f.users.owner.fetch(
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/client/pages/customer-contacts/batch.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/client/pages/customer-contacts/detail.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/client/pages/customer-contacts/edit.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/client/pages/customer-contacts/index.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/client/pages/customer-contacts/locales.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/client/pages/customer-contacts/model.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/client/pages/customer-contacts/relation-picker.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/client/pages/customer-contacts/shared.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/database/main/migrations/202611030002_create_customer_contacts.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/database/main/seeds/202611030002_customer_contacts.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/server/providers/customer-contacts-authorization.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/server/providers/customer-contacts-data.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/server/providers/customer-contacts.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/server/routes/customer-contacts.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/tests/client/customer-contacts.test.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/tests/database/customer-contacts-migration.test.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/customer-contacts-example/tests/server/customer-contacts.test.ts
- Executable scriptline 1
Executable file - Network accessline 13
connections: ['main', 'analytics'], config: { app: { publicOrigin: 'http://localhost' }, - Network accessline 14
config: { app: { publicOrigin: 'http://localhost' }, auth: { - Network accessline 15
app: { publicOrigin: 'http://localhost' }, - Network accessline 16
[Credential-related source omitted] - Network accessline 17
[Credential-related source omitted] - Network accessline 18
trustedOrigins: ['http://localhost'], - Network accessline 24
const write = (body: unknown, method = 'POST'): RequestInit => ({ method, headers: { 'content-type': 'application/json', origin: 'http://localhost' }, - Network accessline 25
method, headers: { 'content-type': 'application/json', origin: 'http://localhost' }, body: JSON.stringify(body), - Network accessline 26
headers: { 'content-type': 'application/json', origin: 'http://localhost' }, - Network accessline 34
test.beforeEach(async ({ testApp }) => { const admin = await signIn(testApp, DEFAULT_ADMIN_CREDENTIALS); const reset = await admin.fetch(`${prefix}/reset`, write({})); - Network accessline 35
const admin = await signIn(testApp, DEFAULT_ADMIN_CREDENTIALS); const reset = await admin.fetch(`${prefix}/reset`, write({})); if (reset.status !== 200) throw new Error('Example reset failed'); - Network accessline 36
const reset = await admin.fetch(`${prefix}/reset`, write({})); - Network accessline 54
const manager = await signIn(testApp, credentials('manager')); for (const page of [1, 2]) { const result = await rep.fetch( - Network accessline 55
for (const page of [1, 2]) { const result = await rep.fetch( `${prefix}/customers/options?page=${page}&pageSize=10`, - Network accessline 56
const result = await rep.fetch( - Network accessline 71
); } const searched = await rep.fetch( - Network accessline 72
} const searched = await rep.fetch( `${prefix}/customers/options?search=aCoRn&status=active&pageSize=20`, - Network accessline 73
const searched = await rep.fetch( - Network accessline 79
}); expect( (await rep.fetch(`${prefix}/customers/options?pageSize=21`)).status, - Network accessline 80
expect( (await rep.fetch(`${prefix}/customers/options?pageSize=21`)).status, ).toBe(400); - Network accessline 81
(await rep.fetch(`${prefix}/customers/options?pageSize=21`)).status, - Network accessline 82
).toBe(400); expect((await rep.fetch(`${prefix}/customers/customer-21`)).status).toBe(403); expect((await rep.fetch(`${prefix}/customers/missing`)).status).toBe(403); - Network accessline 83
expect((await rep.fetch(`${prefix}/customers/customer-21`)).status).toBe(403); - Network accessline 84
expect((await rep.fetch(`${prefix}/customers/missing`)).status).toBe(403); - Network accessline 85
expect( await (await rep.fetch(`${prefix}/salesReps/options`)).json(), ).toMatchObject({ data: [{ id: 'crm-rep' }], meta: { total: 1 } }); - Network accessline 86
await (await rep.fetch(`${prefix}/salesReps/options`)).json(), - Network accessline 88
expect( await ( await manager.fetch(`${prefix}/salesReps/options?search=aLeX`) - Network accessline 89
await ( await manager.fetch(`${prefix}/salesReps/options?search=aLeX`) ).json(), - Network accessline 90
await manager.fetch(`${prefix}/salesReps/options?search=aLeX`) - Network accessline 94
meta: { total: 1 }, }); expect((await rep.fetch(`${prefix}/salesReps/crm-colleague`)).status).toBe( - Network accessline 95
}); expect((await rep.fetch(`${prefix}/salesReps/crm-colleague`)).status).toBe( 403, - Network accessline 96
expect((await rep.fetch(`${prefix}/salesReps/crm-colleague`)).status).toBe( - Network accessline 105
}; expect( (await rep.fetch(`${prefix}/contacts/contact-01`, write(contact, 'PATCH'))) - Network accessline 106
expect( (await rep.fetch(`${prefix}/contacts/contact-01`, write(contact, 'PATCH'))) .status, - Network accessline 107
(await rep.fetch(`${prefix}/contacts/contact-01`, write(contact, 'PATCH'))) - Network accessline 115
expect( ( await rep.fetch( - Network accessline 116
( await rep.fetch( `${prefix}/contacts/contact-01`, - Network accessline 117
await rep.fetch( - Network accessline 122
).toBe(403); expect( (await rep.fetch(`${prefix}/contacts/contact-21`, write(contact, 'PATCH'))) - Network accessline 123
expect( (await rep.fetch(`${prefix}/contacts/contact-21`, write(contact, 'PATCH'))) .status, - Network accessline 124
(await rep.fetch(`${prefix}/contacts/contact-21`, write(contact, 'PATCH'))) - Network accessline 125
.status, ).toBe(403); expect((await rep.fetch(`${prefix}/contacts/contact-21`)).status).toBe(403); - Network accessline 126
).toBe(403); expect((await rep.fetch(`${prefix}/contacts/contact-21`)).status).toBe(403); expect( - Network accessline 127
expect((await rep.fetch(`${prefix}/contacts/contact-21`)).status).toBe(403); - Network accessline 128
expect( ( await rep.fetch( - Network accessline 129
( await rep.fetch( `${prefix}/contacts`, - Network accessline 130
await rep.fetch( - Network accessline 136
expect( ( await rep.fetch( - Network accessline 137
( await rep.fetch( `${prefix}/contacts`, - Network accessline 138
await rep.fetch( - Network accessline 142
).status, ).toBe(409); const created = await rep.fetch(`${prefix}/contacts`, write(contact)); - Network accessline 143
).toBe(409); const created = await rep.fetch(`${prefix}/contacts`, write(contact)); expect(created.status).toBe(201); - Network accessline 144
const created = await rep.fetch(`${prefix}/contacts`, write(contact)); - Network accessline 147
expect( ( await rep.fetch(`${prefix}/contacts/${saved.id}`, { - Network accessline 148
( await rep.fetch(`${prefix}/contacts/${saved.id}`, { method: 'DELETE', - Network accessline 149
await rep.fetch(`${prefix}/contacts/${saved.id}`, { - Network accessline 150
method: 'DELETE', headers: { origin: 'http://localhost' }, }) - Network accessline 151
headers: { origin: 'http://localhost' }, - Network accessline 160
expect( ( await rep.fetch(`${prefix}/contacts/contact-21`, { - Network accessline 161
( await rep.fetch(`${prefix}/contacts/contact-21`, { method: 'DELETE', - Network accessline 162
await rep.fetch(`${prefix}/contacts/contact-21`, { - Network accessline 163
method: 'DELETE', headers: { origin: 'http://localhost' }, }) - Network accessline 164
headers: { origin: 'http://localhost' }, - Network accessline 168
expect( ( await manager.fetch( - Network accessline 169
( await manager.fetch( `${prefix}/customers/customer-01`, - Network accessline 170
await manager.fetch( - Network accessline 174
).status, ).toBe(200); expect((await rep.fetch(`${prefix}/customers/customer-01`)).status).toBe(403); - Network accessline 175
).toBe(200); expect((await rep.fetch(`${prefix}/customers/customer-01`)).status).toBe(403); expect((await rep.fetch(`${prefix}/contacts/contact-01`)).status).toBe(200); // Moved to another still-owned customer. - Network accessline 176
expect((await rep.fetch(`${prefix}/customers/customer-01`)).status).toBe(403); - Network accessline 177
expect((await rep.fetch(`${prefix}/contacts/contact-01`)).status).toBe(200); // Moved to another still-owned customer. - Network accessline 198
]) { expect( (await manager.fetch(`${prefix}/customers/batchUpdate`, batch(values))) - Network accessline 199
expect( (await manager.fetch(`${prefix}/customers/batchUpdate`, batch(values))) .status, - Network accessline 200
(await manager.fetch(`${prefix}/customers/batchUpdate`, batch(values))) - Network accessline 204
expect( ( await manager.fetch( - Network accessline 205
( await manager.fetch( `${prefix}/customers/batchUpdate`, - Network accessline 206
await manager.fetch( - Network accessline 212
for (const ownerId of ['crm-colleague', 'crm-inactive', 'missing']) { expect( (await rep.fetch(`${prefix}/customers/batchUpdate`, batch({ ownerId }))) - Network accessline 213
expect( (await rep.fetch(`${prefix}/customers/batchUpdate`, batch({ ownerId }))) .status, - Network accessline 214
(await rep.fetch(`${prefix}/customers/batchUpdate`, batch({ ownerId }))) - Network accessline 217
expect( ( await rep.fetch( - Network accessline 218
( await rep.fetch( `${prefix}/customers/customer-01`, - Network accessline 219
await rep.fetch( - Network accessline 227
expect( ( await manager.fetch( - Network accessline 228
( await manager.fetch( `${prefix}/customers/batchUpdate`, - Network accessline 229
await manager.fetch( - Network accessline 236
await repository.findOne({ filter: { id: 'customer-01' } }), ).toMatchObject({ name: 'Acorn 01', status: 'paused', ownerId: 'crm-rep' }); const mixed = await rep.fetch( - Network accessline 237
).toMatchObject({ name: 'Acorn 01', status: 'paused', ownerId: 'crm-rep' }); const mixed = await rep.fetch( `${prefix}/customers/batchUpdate`, - Network accessline 238
const mixed = await rep.fetch( - Network accessline 269
expect( ( await rep.fetch( - Network accessline 270
( await rep.fetch( `${prefix}/customers/customer-21`, - Network accessline 271
await rep.fetch( - Network accessline 277
expect( ( await rep.fetch( - Network accessline 278
( await rep.fetch( `${prefix}/customers/customer-10`, - Network accessline 279
await rep.fetch( - Network accessline 283
).status, ).toBe(409); const success = await manager.fetch( - Network accessline 284
).toBe(409); const success = await manager.fetch( `${prefix}/customers/batchUpdate`, - Network accessline 285
const success = await manager.fetch( - Network accessline 294
ownerId: 'crm-colleague', }); expect((await rep.fetch(`${prefix}/reset`, write({}))).status).toBe(403); - Network accessline 295
}); expect((await rep.fetch(`${prefix}/reset`, write({}))).status).toBe(403); const admin = await signIn(testApp, DEFAULT_ADMIN_CREDENTIALS); - Network accessline 296
expect((await rep.fetch(`${prefix}/reset`, write({}))).status).toBe(403); - Network accessline 297
const admin = await signIn(testApp, DEFAULT_ADMIN_CREDENTIALS); expect((await admin.fetch(`${prefix}/reset`, write({}))).status).toBe(200); expect( - Network accessline 298
expect((await admin.fetch(`${prefix}/reset`, write({}))).status).toBe(200); - Network accessline 322
], }); expect((await rep.fetch(`${prefix}/customers`)).status).toBe(403); - Network accessline 323
}); expect((await rep.fetch(`${prefix}/customers`)).status).toBe(403); expect( - Network accessline 324
expect((await rep.fetch(`${prefix}/customers`)).status).toBe(403); - Network accessline 325
expect( ( await rep.fetch( - Network accessline 326
( await rep.fetch( `${prefix}/customers/batchUpdate`, - Network accessline 327
await rep.fetch( - Network accessline 339
grants: actionOnly, }); expect((await rep.fetch(`${prefix}/customers`)).status).toBe(200); - Network accessline 340
}); expect((await rep.fetch(`${prefix}/customers`)).status).toBe(200); await authz.permissionSets.update('crm-rep', { - Network accessline 341
expect((await rep.fetch(`${prefix}/customers`)).status).toBe(200);
packages/app/app-skills/skills/nocobase-app-development/assets/list-edit-example/client/pages/skill-projects/edit.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/list-edit-example/client/pages/skill-projects/index.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/list-edit-example/client/pages/skill-projects/locales.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/list-edit-example/database/main/migrations/202611030001_create_skill_projects.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/list-edit-example/server/providers/skill-projects.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/list-edit-example/server/routes/skill-projects.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/list-edit-example/tests/client/skill-projects.test.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/list-edit-example/tests/database/skill-projects-migration.test.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/assets/list-edit-example/tests/server/skill-projects.test.ts
- Executable scriptline 1
Executable file - Network accessline 12
connections: ['main', 'analytics'], config: { app: { publicOrigin: 'http://localhost' }, - Network accessline 13
config: { app: { publicOrigin: 'http://localhost' }, auth: { - Network accessline 14
app: { publicOrigin: 'http://localhost' }, - Network accessline 15
[Credential-related source omitted] - Network accessline 16
[Credential-related source omitted] - Network accessline 17
trustedOrigins: ['http://localhost'], - Network accessline 29
headers: { 'content-type': 'application/json', origin: 'http://localhost', - Network accessline 30
'content-type': 'application/json', origin: 'http://localhost', 'Idempotency-Key': operationKey, - Network accessline 31
origin: 'http://localhost', - Network accessline 55
headers: { 'content-type': 'application/json', origin: 'http://localhost', - Network accessline 56
'content-type': 'application/json', origin: 'http://localhost', }, - Network accessline 57
origin: 'http://localhost', - Network accessline 62
).toBe(200); const denied = await signIn(testApp, member); expect((await denied.fetch('/skillProjects')).status).toBe(403); - Network accessline 63
const denied = await signIn(testApp, member); expect((await denied.fetch('/skillProjects')).status).toBe(403); expect((await denied.fetch('/skillProjects', write('Denied'))).status).toBe( - Network accessline 64
expect((await denied.fetch('/skillProjects')).status).toBe(403); - Network accessline 65
expect((await denied.fetch('/skillProjects', write('Denied'))).status).toBe( - Network accessline 67
); expect((await request('/example')).status).toBe(200); expect((await admin.fetch('/skillProjects', write(' '))).status).toBe(400); - Network accessline 68
expect((await request('/example')).status).toBe(200); expect((await admin.fetch('/skillProjects', write(' '))).status).toBe(400); expect( - Network accessline 69
expect((await admin.fetch('/skillProjects', write(' '))).status).toBe(400); - Network accessline 70
expect( (await admin.fetch('/skillProjects', write('a'.repeat(101)))).status, ).toBe(400); - Network accessline 71
(await admin.fetch('/skillProjects', write('a'.repeat(101)))).status, - Network accessline 72
).toBe(400); const operation = key(); const created = await admin.fetch( - Network accessline 73
const operation = key(); const created = await admin.fetch( '/skillProjects', - Network accessline 74
const created = await admin.fetch( - Network accessline 79
const body = (await created.json()) as { data: { id: string; name: string } }; expect(body.data.name).toBe('Alpha'); const replay = await admin.fetch( - Network accessline 80
expect(body.data.name).toBe('Alpha'); const replay = await admin.fetch( '/skillProjects', - Network accessline 81
const replay = await admin.fetch( - Network accessline 87
expect(await replay.json()).toEqual(body); expect( (await admin.fetch('/skillProjects', write('Different', 'POST', operation))) - Network accessline 88
expect( (await admin.fetch('/skillProjects', write('Different', 'POST', operation))) .status, - Network accessline 89
(await admin.fetch('/skillProjects', write('Different', 'POST', operation))) - Network accessline 92
expect(await testApp.connection.repository('skillProjects').count()).toBe(1); const path = `/skillProjects/${body.data.id}`; expect((await denied.fetch(path, write('Denied edit', 'PATCH'))).status).toBe( - Network accessline 93
const path = `/skillProjects/${body.data.id}`; expect((await denied.fetch(path, write('Denied edit', 'PATCH'))).status).toBe( 403, - Network accessline 94
expect((await denied.fetch(path, write('Denied edit', 'PATCH'))).status).toBe( - Network accessline 95
403, ); expect((await admin.fetch(path, write('Beta', 'PATCH'))).status).toBe(200); - Network accessline 96
); expect((await admin.fetch(path, write('Beta', 'PATCH'))).status).toBe(200); expect(await (await admin.fetch(path)).json()).toMatchObject({ - Network accessline 97
expect((await admin.fetch(path, write('Beta', 'PATCH'))).status).toBe(200); - Network accessline 98
expect(await (await admin.fetch(path)).json()).toMatchObject({ - Network accessline 104
.findOne({ filter: { id: body.data.id } }), ).toMatchObject({ name: 'Beta' }); expect(await (await admin.fetch('/skillProjects')).json()).toMatchObject({ - Network accessline 105
).toMatchObject({ name: 'Beta' }); expect(await (await admin.fetch('/skillProjects')).json()).toMatchObject({ data: [{ id: body.data.id, name: 'Beta' }], - Network accessline 106
expect(await (await admin.fetch('/skillProjects')).json()).toMatchObject({ - Network accessline 108
meta: { total: 1 }, }); expect((await admin.fetch(`/skillProjects/${randomUUID()}`)).status).toBe( - Network accessline 109
}); expect((await admin.fetch(`/skillProjects/${randomUUID()}`)).status).toBe( 404, - Network accessline 110
expect((await admin.fetch(`/skillProjects/${randomUUID()}`)).status).toBe( - Network accessline 113
expect( ( await admin.fetch( - Network accessline 114
( await admin.fetch( `/skillProjects/${randomUUID()}`, - Network accessline 115
await admin.fetch( - Network accessline 121
const boundary = '项'.repeat(100); expect( (await admin.fetch(path, write(` ${boundary} `, 'PATCH'))).status, - Network accessline 122
expect( (await admin.fetch(path, write(` ${boundary} `, 'PATCH'))).status, ).toBe(200); - Network accessline 123
(await admin.fetch(path, write(` ${boundary} `, 'PATCH'))).status, - Network accessline 124
).toBe(200); expect( (await admin.fetch(path, write('项'.repeat(101), 'PATCH'))).status, - Network accessline 125
expect( (await admin.fetch(path, write('项'.repeat(101), 'PATCH'))).status, ).toBe(400); - Network accessline 126
(await admin.fetch(path, write('项'.repeat(101), 'PATCH'))).status, - Network accessline 127
).toBe(400); expect(await (await admin.fetch(path)).json()).toMatchObject({ data: { name: boundary }, - Network accessline 128
expect(await (await admin.fetch(path)).json()).toMatchObject({ - Network accessline 139
.repository('skillProjects') .createOne({ values: { id: randomUUID(), name: `Project ${total}` } }); const response = (await (await admin.fetch('/skillProjects')).json()) as { - Network accessline 140
.createOne({ values: { id: randomUUID(), name: `Project ${total}` } }); const response = (await (await admin.fetch('/skillProjects')).json()) as { data: { id: string }[]; - Network accessline 141
const response = (await (await admin.fetch('/skillProjects')).json()) as { - Network accessline 154
}) => { const admin = await signIn(testApp, DEFAULT_ADMIN_CREDENTIALS); const created = await admin.fetch('/skillProjects', write('Original')); - Network accessline 155
const admin = await signIn(testApp, DEFAULT_ADMIN_CREDENTIALS); const created = await admin.fetch('/skillProjects', write('Original')); const { data: project } = (await created.json()) as { data: { id: string } }; - Network accessline 156
const created = await admin.fetch('/skillProjects', write('Original')); - Network accessline 161
expect( (await admin.fetch(path, write('Committed', 'PATCH', committedKey))).status, - Network accessline 162
(await admin.fetch(path, write('Committed', 'PATCH', committedKey))).status, - Network accessline 165
.repository('skillProjects') .deleteOne({ filter: { id: project.id } }); const committed = await admin.fetch( - Network accessline 166
.deleteOne({ filter: { id: project.id } }); const committed = await admin.fetch( path, - Network accessline 167
const committed = await admin.fetch( - Network accessline 182
const notAppliedKey = key(); const notApplied = await admin.fetch( - Network accessline 183
const notApplied = await admin.fetch( - Network accessline 193
.repository('skillProjects') .createOne({ values: { id: project.id, name: 'Replacement' } }); const delayed = await admin.fetch( - Network accessline 194
.createOne({ values: { id: project.id, name: 'Replacement' } }); const delayed = await admin.fetch( path, - Network accessline 195
const delayed = await admin.fetch( - Network accessline 202
error: { reason: 'PROJECT_UPDATE_NOT_APPLIED' }, }); expect(await (await admin.fetch(path)).json()).toMatchObject({ - Network accessline 203
}); expect(await (await admin.fetch(path)).json()).toMatchObject({ data: { name: 'Replacement' }, - Network accessline 204
expect(await (await admin.fetch(path)).json()).toMatchObject({ - Network accessline 206
}); expect( (await admin.fetch(path, write('Changed payload', 'PATCH', notAppliedKey))) - Network accessline 207
expect( (await admin.fetch(path, write('Changed payload', 'PATCH', notAppliedKey))) .status, - Network accessline 208
(await admin.fetch(path, write('Changed payload', 'PATCH', notAppliedKey)))
packages/app/app-skills/skills/nocobase-app-development/references/database-connections.md
- Dangerous shell operationline 198
`better-sqlite3` is recorded as `false`: it loads the prebuilt binary it ships for Linux (glibc and musl), macOS and Windows on x64 and arm64, so it needs no build and installs without a C++ toolchain. On any other platform it fails with `C
packages/app/app-skills/skills/nocobase-app-development/references/dev-server.md
- Network accessline 37
Treat `/main` in examples as a default, never as a fixed route. Local `APP_BASE_PATH` resolves from the command-line environment, then `.env.local`, then `.env`, with `/main` as the fallback. Determine the remote application's actual public - Network accessline 39
For local client debugging against another running application, use `PROXY_TARGET_URL=<remote-application-base-url> pnpm dev` (for example, `https://backend.example.com/main`, without `/api`). This starts Vite, proxies API and WebSocket pat
packages/app/app-skills/skills/nocobase-app-development/references/frontend/design-sources.md
- Network accessline 7
| Source and reviewed revision - Network accessline 8
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Network accessline 9
| [shadcn/ui design-system guidance](https://github.com/shadcn-ui/ui/blob/96da9cc7f1aa10580a3741664e2a77c721206c00/skills/shadcn/design-system.md) and [component showcase guidance](https://github.com/shadcn-ui/ui/blob/96da9cc7f1aa10580a3741 - Network accessline 10
| [UI UX Pro Max](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill/blob/28b3b8dee8c976df4fa3e94aed4e092ad43fcb03/README.md) - Network accessline 11
| [Interface Design](https://github.com/Dammyjay93/interface-design/blob/2f9be3206855bcb2d1d0af262c8bae25cba6658d/README.md) - Network accessline 12
| [Vercel Web Interface Guidelines](https://github.com/vercel-labs/web-interface-guidelines/blob/434b7f91364665f2f733b310ec54809bf8f37937/command.md) - Network accessline 14
The upstream repositories identify these sources as MIT licensed: [shadcn](https://github.com/shadcn-ui/ui/blob/96da9cc7f1aa10580a3741664e2a77c721206c00/LICENSE.md), [UI UX Pro Max](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill/bl
packages/app/app-skills/skills/nocobase-app-development/references/frontend/frontend-dev.md
- Network accessline 45
Call `copyText(text)` directly from the user's click handler and await its boolean result. It uses the [Clipboard API](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/writeText) when available and falls back to selection-based co - Network accessline 47
For a dialog or other focus trap, pass `copyText(text, { container: dialogElement })` when the trigger does not take focus. Otherwise the helper selects the nearest dialog containing the active element, or the document body. Its temporary f
packages/app/app-skills/skills/nocobase-app-development/references/frontend/references/styling.md
- Network accessline 110
- **Look for an `@nocobase` item first.** Before building a business component or page section yourself, search the UI Library: through the shadcn MCP server when your editor runs it (its search and example tools), otherwise with `pnpm exec - Network accessline 111
- **Offline, read the catalog.** When `https://ui.nocobase.com` cannot be reached, [`ui-library.md`](ui-library.md) lists every item with its kind, install command and location, description, plugin dependencies and example, as of this relea
packages/app/app-skills/skills/nocobase-app-development/references/frontend/references/testing.md
- Network accessline 157
End-to-end tests run against a running application. `playwright.config.ts` sets no `baseURL` or `webServer`, so start `pnpm dev` first and have each test read the application URL, including the deployment base path, from `APP_URL` (defaulti
packages/app/app-skills/skills/nocobase-app-development/references/frontend/references/theme.md
- Network accessline 443
- **Any token change** (a color, font, size, spacing, radius or shadow): - With `pnpm dev` running, append `tests/fixtures/theme-tokens.html` to the `Local:` URL it prints, which already ends with the base path and a slash (`http://127.0. - Network accessline 444
- With `pnpm dev` running, append `tests/fixtures/theme-tokens.html` to the `Local:` URL it prints, which already ends with the base path and a slash (`http://127.0.0.1:13000/main/tests/fixtures/theme-tokens.html`). The page renders the rea
packages/app/app-skills/skills/nocobase-app-development/references/frontend/references/ui-library.md
- Network accessline 5
Every item of the `@nocobase` shadcn registry (the NocoBase UI Library, previewed at https://ui.nocobase.com), as of this release of the Skill. A component installs into `client/components/` and a block into `client/extensions/nocobase-<ite
packages/app/app-skills/skills/nocobase-app-development/references/frontend/scripts/capture.md
- Network accessline 6
# 1. Save the sign-in session: a browser window opens, the user signs in themselves, and the script never touches the password node .agents/skills/nocobase-app-development/references/frontend/scripts/capture.mjs login --base http://127.0.0. - Network accessline 7
node .agents/skills/nocobase-app-development/references/frontend/scripts/capture.mjs login --base http://127.0.0.1:13000/main/ - Network accessline 15
The sign-in session is saved to `storage/ui-workflow/auth.json` (`storage/` is ignored by git). Do not commit or share it, and delete it when the task ends. For `--base`, pass the `Local:` URL `pnpm dev` prints (for example `http://127.0.0. - Network accessline 20
{ "base": "http://127.0.0.1:13000/main", - Network accessline 21
"base": "http://127.0.0.1:13000/main",
packages/app/app-skills/skills/nocobase-app-development/references/frontend/scripts/capture.mjs
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 4
// // 1) Save the sign-in session (the user signs in themselves in the browser window that opens; the script never touches the password): // node .agents/skills/nocobase-app-development/references/frontend/scripts/capture.mjs login --bas - Network accessline 5
// 1) Save the sign-in session (the user signs in themselves in the browser window that opens; the script never touches the password): // node .agents/skills/nocobase-app-development/references/frontend/scripts/capture.mjs login --base h - Network accessline 6
// node .agents/skills/nocobase-app-development/references/frontend/scripts/capture.mjs login --base http://127.0.0.1:13000/main/ [--timeout 10] - Network accessline 73
if (!base) throw new Error( 'Missing --base, for example --base http://127.0.0.1:13000/main/', - Network accessline 74
throw new Error( 'Missing --base, for example --base http://127.0.0.1:13000/main/', ); - Network accessline 75
'Missing --base, for example --base http://127.0.0.1:13000/main/',
packages/app/app-skills/skills/nocobase-app-development/references/frontend/shadcn/SKILL.md
- Broad permissionsline 1
Bash(npx shadcn@latest *), Bash(pnpm dlx shadcn@latest *), Bash(bunx --bun shadcn@latest *) - Network accessline 263
**Named presets:** `nova`, `vega`, `maia`, `lyra`, `mira`, `luma` **Templates:** `next`, `vite`, `start`, `react-router`, `astro` (all support `--monorepo`) and `laravel` (not supported for monorepo) **Preset codes:** Version-prefixed base6 - Network accessline 265
**Preset codes:** Version-prefixed base62 strings (e.g. `a2r6bw` or `b0`), from [ui.shadcn.com](https://ui.shadcn.com).
packages/app/app-skills/skills/nocobase-app-development/references/frontend/shadcn/cli.md
- Network accessline 106
# Works with URLs too. npx shadcn@latest add https://api.npoint.io/abc123 --dry-run - Network accessline 107
npx shadcn@latest add https://api.npoint.io/abc123 --dry-run - Network accessline 173
input docs https://ui.shadcn.com/docs/components/radix/input - Network accessline 174
docs https://ui.shadcn.com/docs/components/radix/input - Network accessline 175
examples https://raw.githubusercontent.com/.../examples/input-example.tsx - Network accessline 177
button docs https://ui.shadcn.com/docs/components/radix/button - Network accessline 178
docs https://ui.shadcn.com/docs/components/radix/button - Network accessline 179
examples https://raw.githubusercontent.com/.../examples/button-example.tsx - Network accessline 275
1. **Named:** `--preset nova` or `--preset lyra` 2. **Code:** `--preset a2r6bw` (version-prefixed base62 string, e.g. `a2r6bw` or `b0`) 3. **URL:** `--preset "https://ui.shadcn.com/init?base=radix&style=nova&..."` - Network accessline 277
3. **URL:** `--preset "https://ui.shadcn.com/init?base=radix&style=nova&..."`
packages/app/app-skills/skills/nocobase-app-development/references/frontend/shadcn/customization.md
packages/app/app-skills/skills/nocobase-app-development/references/frontend/shadcn/mcp.md
- Network accessline 90
{ "registries": { "@acme": "https://acme.com/r/{name}.json", - Network accessline 91
"registries": { "@acme": "https://acme.com/r/{name}.json", "@private": { - Network accessline 92
"@acme": "https://acme.com/r/{name}.json", - Network accessline 93
[Credential-related source omitted] - Network accessline 94
"url": "https://private.com/r/{name}.json", - Access to secretsline 95
[Credential-related source omitted] - Network accessline 105
Community registry index: `https://ui.shadcn.com/r/registries.json`
packages/app/app-skills/skills/nocobase-app-development/references/frontend/shadcn/registry.md
- Network accessline 28
{ "$schema": "https://ui.shadcn.com/schema/registry.json", - Network accessline 29
"$schema": "https://ui.shadcn.com/schema/registry.json", - Network accessline 30
"name": "acme", "homepage": "https://acme.com", "items": [ - Network accessline 31
"homepage": "https://acme.com", - Network accessline 61
{ "$schema": "https://ui.shadcn.com/schema/registry.json", - Network accessline 62
"$schema": "https://ui.shadcn.com/schema/registry.json", - Network accessline 63
"name": "acme", "homepage": "https://acme.com", "include": ["registry/ui/registry.json", "registry/blocks/registry.json"] - Network accessline 64
"homepage": "https://acme.com", - Network accessline 186
| `@acme/button` | namespace | Item `button` from configured registry `@acme`. | | `@acme/ui/button` | namespace | Item `ui/button` from configured registry `@acme`. | | `https:/ - Network accessline 187
| `@acme/ui/button` | namespace | Item `ui/button` from configured registry `@acme`. | | `https://example.com/r/button.json` | url | Built registry item JSON at that URL. | | `./butto - Network accessline 188
| `https://example.com/r/button.json` | url | Built registry item JSON at that URL. | - Network accessline 227
-> resolve ref with git ls-remote -> commit SHA -> read https://raw.githubusercontent.com/{owner}/{repo}/{sha}/registry.json - Network accessline 228
-> commit SHA -> read https://raw.githubusercontent.com/{owner}/{repo}/{sha}/registry.json -> read includes and item files from the same SHA - Network accessline 229
-> read https://raw.githubusercontent.com/{owner}/{repo}/{sha}/registry.json
packages/app/app-skills/skills/nocobase-app-development/references/frontend/templates/run.md
- Network accessline 3
| Item | Details | | ------------ | ----------------------------------------------------------------------- | | Page | `/<path>`, application URL `http://…/main - Network accessline 4
| ------------ | ----------------------------------------------------------------------- | | Page | `/<path>`, application URL `http://…/main` | | Code version | Description of the changes at the time of - Network accessline 5
| Page | `/<path>`, application URL `http://…/main` |
packages/app/app-skills/skills/nocobase-app-development/references/frontend/ui-workflow.md
- Network accessline 107
1. If the application is running, reuse it; if not, start it with `pnpm dev` and open the `Local:` URL it prints, which ends with the deployment base path and a slash (for example `http://127.0.0.1:13000/main/`), with the page's path append - Dangerous shell operationline 151
Cleanup: first retain the confirmed decisions as described under Artifacts. Delete only the temporary task copies of `design.md`, `review-design.md`, `run.md`, `acceptance.md` and `capture.json`, and the sign-in sessions `storage/ui-workflo
packages/app/app-skills/skills/nocobase-app-development/references/http-api.md
- Network accessline 3
Every route under `/api` follows these rules, whether the application or a plugin owns it. They are Google's API design guidelines ([aip.dev](https://google.aip.dev)) with one change: a custom method is separated by a slash, `/apps/{appId}/ - Network accessline 260
Open `<origin><APP_BASE_PATH>/api/swagger/docs` in a browser where you are signed in, such as `http://127.0.0.1:13000/main/api/swagger/docs` for a local application at the default `/main`. Swagger UI sends the session cookie with every requ - Network accessline 265
[Credential-related source omitted]
packages/app/app-skills/skills/nocobase-app-development/references/plugins.md
- Network accessline 70
Automatically request the required package's metadata from `https://pkg-v3.nocobase.com/` in the application directory using existing npm/pnpm credentials. Registry health, access to a public package or access to another commercial package - Network accessline 73
env 'npm_config_@nocobase:registry=https://pkg-v3.nocobase.com/' npm_config_registry=https://pkg-v3.nocobase.com/ pnpm view <package> versions --json - Network accessline 81
env 'npm_config_@nocobase:registry=https://pkg-v3.nocobase.com/' npm_config_registry=https://pkg-v3.nocobase.com/ pnpm nocobase plugin register <package> --version <compatible-version>
packages/app/app-skills/skills/nocobase-app-development/references/services-and-jobs.md
- Network accessline 101
public async execute({ jobId, signal }: JobExecutionContext): Promise<void> { const response = await fetch(this.payload.url, { - Network accessline 102
const response = await fetch(this.payload.url, { - Network accessline 120
const receipt = await executor.addJob( new PublishDocument({ url: 'https://publisher.example/documents', - Network accessline 121
new PublishDocument({ url: 'https://publisher.example/documents', documentId: 'document-42', - Network accessline 122
url: 'https://publisher.example/documents',
packages/app/app-skills/skills/nocobase-app-development/references/testing.md
- Network accessline 127
expect((await request('/orders')).status).toBe(401); const admin = await signIn(testApp, DEFAULT_ADMIN_CREDENTIALS); expect((await admin.fetch('/orders')).status).toBe(200); - Network accessline 128
const admin = await signIn(testApp, DEFAULT_ADMIN_CREDENTIALS); expect((await admin.fetch('/orders')).status).toBe(200); }); - Network accessline 129
expect((await admin.fetch('/orders')).status).toBe(200);
packages/app/app-skills/skills/nocobase-app-development/references/testing/cli/command.md
- Network accessline 95
}, }, app: { publicOrigin: 'http://localhost' }, - Network accessline 96
}, app: { publicOrigin: 'http://localhost' }, auth: { - Network accessline 97
app: { publicOrigin: 'http://localhost' }, - Network accessline 98
[Credential-related source omitted] - Network accessline 99
[Credential-related source omitted] - Network accessline 100
trustedOrigins: ['http://localhost'],
packages/app/app-skills/skills/nocobase-app-development/references/testing/playwright/login.md
packages/app/app-skills/skills/nocobase-app-development/references/testing/server/routes.md
- Network accessline 37
connections: ['main'], config: { app: { publicOrigin: 'http://localhost' }, - Network accessline 38
config: { app: { publicOrigin: 'http://localhost' }, auth: { - Network accessline 39
app: { publicOrigin: 'http://localhost' }, - Network accessline 40
[Credential-related source omitted] - Network accessline 41
[Credential-related source omitted] - Network accessline 42
trustedOrigins: ['http://localhost'], - Network accessline 74
test('returns the administrator record after sign-in', async ({ testApp }) => { const admin = await signIn(testApp, DEFAULT_ADMIN_CREDENTIALS); const response = await admin.fetch( - Network accessline 75
const admin = await signIn(testApp, DEFAULT_ADMIN_CREDENTIALS); const response = await admin.fetch( `/users?q=${encodeURIComponent(admin.user.email)}`, - Network accessline 76
const response = await admin.fetch( - Network accessline 100
const created = await admin.fetch('/users', { - Network accessline 102
headers: { 'content-type': 'application/json', origin: 'http://localhost', - Network accessline 103
'content-type': 'application/json', origin: 'http://localhost', }, - Network accessline 104
origin: 'http://localhost', - Network accessline 110
const member = await signIn(testApp, credentials); const forbidden = await member.fetch('/users'); - Network accessline 111
const forbidden = await member.fetch('/users'); - Network accessline 117
const saved = await admin.fetch( - Network accessline 132
test('returns 400 for an invalid page number', async ({ testApp }) => { const admin = await signIn(testApp, DEFAULT_ADMIN_CREDENTIALS); const response = await admin.fetch('/users?page=0'); - Network accessline 134
const response = await admin.fetch('/users?page=0'); - Network accessline 142
test('returns 404 for a missing user', async ({ testApp }) => { const admin = await signIn(testApp, DEFAULT_ADMIN_CREDENTIALS); const response = await admin.fetch('/users/server-test-missing-user', { - Network accessline 143
const admin = await signIn(testApp, DEFAULT_ADMIN_CREDENTIALS); const response = await admin.fetch('/users/server-test-missing-user', { method: 'PATCH', - Network accessline 144
const response = await admin.fetch('/users/server-test-missing-user', { - Network accessline 146
headers: { 'content-type': 'application/json', origin: 'http://localhost', - Network accessline 147
'content-type': 'application/json', origin: 'http://localhost', }, - Network accessline 148
origin: 'http://localhost', - Network accessline 160
`request('/users')` is anonymous and resolves below the application's API root, including its deployment base path. `signIn()` performs a real sign-in; `admin.fetch()` and `member.fetch()` attach the resulting session cookie. Pass `/users`,
packages/app/app-skills/skills/nocobase-app-development/scripts/check-ui-components.mjs
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-development/scripts/create-internal-package.mjs
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/cli/count.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/cli/index.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/client/index.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/client/locales/de-DE.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/client/locales/en-US.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/client/locales/es-ES.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/client/locales/fr-FR.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/client/locales/id-ID.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/client/locales/index.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/client/locales/ja-JP.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/client/locales/pt-BR.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/client/locales/vi-VN.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/client/locales/zh-CN.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/client/locales/zh-TW.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/client/public-config.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/client/reading-list.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/database/migrations/202610180001_reading_list.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/eslint.config.js
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/package.json
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/server/config.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/server/index.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/server/provider.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/server/providers/index.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/server/routes.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/server/service.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/tests/cli/count.test.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/tests/client/public-config.test.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/tests/client/reading-list.test.tsx
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/tests/database/migration.test.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/tests/fixtures/app/package.json
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/tests/fixtures/app/server/app.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/tests/fixtures/app/server/runtime.ts
- Executable scriptline 1
Executable file - Network accessline 36
internalBasePath: '', publicApiUrl: '/main/api', publicOrigin: 'http://localhost', - Network accessline 37
publicApiUrl: '/main/api', publicOrigin: 'http://localhost', }, - Network accessline 38
publicOrigin: 'http://localhost', - Network accessline 42
[Credential-related source omitted] - Network accessline 43
[Credential-related source omitted] - Network accessline 44
trustedOrigins: ['http://localhost'],
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/tests/fixtures/app/server/standalone.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/tests/helpers/app.ts
- Executable scriptline 1
Executable file - Network accessline 20
const response = await app.request('/auth/sign-up/email', { method: 'POST', headers: { 'content-type': 'application/json', origin: 'http://localhost' }, - Network accessline 21
method: 'POST', headers: { 'content-type': 'application/json', origin: 'http://localhost' }, body: JSON.stringify({ ...credentials, name }), - Network accessline 22
headers: { 'content-type': 'application/json', origin: 'http://localhost' },
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/tests/server/config.test.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/tests/server/routes.test.ts
- Executable scriptline 1
Executable file - Network accessline 11
test('rejects a signed-in reader without a grant', async ({ testApp }) => { const reader = await registerReader(testApp, 'denied-reader'); const response = await reader.fetch('/readingList'); - Network accessline 12
const reader = await registerReader(testApp, 'denied-reader'); const response = await reader.fetch('/readingList'); expect(response.status).toBe(403); - Network accessline 13
const response = await reader.fetch('/readingList'); - Network accessline 44
const response = await reader.fetch('/readingList');
packages/app/app-skills/skills/nocobase-app-plugin-development/assets/testing-example/vitest.config.ts
- Executable scriptline 1
Executable file
packages/app/app-skills/skills/nocobase-app-plugin-development/references/client-components.md
- Network accessline 30
{ "$schema": "https://ui.shadcn.com/schema.json", - Network accessline 31
"$schema": "https://ui.shadcn.com/schema.json", - Network accessline 50
}, "registries": { "@nocobase": "https://ui.nocobase.com/r/{name}.json" - Network accessline 51
"registries": { "@nocobase": "https://ui.nocobase.com/r/{name}.json" }, - Network accessline 52
"@nocobase": "https://ui.nocobase.com/r/{name}.json"
packages/app/app-skills/skills/nocobase-app-plugin-development/references/http-api.md
- Network accessline 152
[Credential-related source omitted]
packages/app/app-skills/skills/nocobase-app-plugin-development/references/registration.md
- Network accessline 22
When target App integration needs a commercial NocoBase plugin or driver, automatically request that package's metadata from `https://pkg-v3.nocobase.com/` with existing npm/pnpm credentials and command-local global/scoped registry override
packages/app/app-skills/skills/nocobase-app-plugin-development/references/server-route-examples.md
packages/app/app-skills/skills/nocobase-app-plugin-development/scripts/verify-testing-example.mjs
- Executable scriptline 1
#!/usr/bin/env node
packages/app/app-skills/skills/nocobase-app-upgrade/SKILL.md
- Dangerous shell operationline 39
Never: overwrite the application with a fresh template copy; bump `defaultTemplateVersion` without merging the source; resolve a conflict by discarding the user's side; run `git checkout --`, `git restore`, `git reset --hard`, `git stash`, - Network accessline 66
REGISTRY=https://registry.npmjs.org
packages/app/app-skills/skills/nocobase-app-upgrade/references/application-cookie-isolation.md
- Access to secretsline 51
[Credential-related source omitted]
packages/app/app-skills/skills/nocobase-app-upgrade/references/database-upgrades.md
- Network accessline 57
When the installed plugins cross the index correction described in the [agents upgrade notes](https://github.com/nocobase/nocobase/blob/943a9a8a80cc1f76c7a01ecd4965a2a0c51be1eb/packages/plugins/app-plugin-agents/docs/mysql-installation-upgr - Network accessline 57
When the installed plugins cross the index correction described in the [agents upgrade notes](https://github.com/nocobase/nocobase/blob/943a9a8a80cc1f76c7a01ecd4965a2a0c51be1eb/packages/plugins/app-plugin-agents/docs/mysql-installation-upgr
packages/app/app-skills/skills/nocobase-app-upgrade/references/versioned-upgrade-verification.md
- Network accessline 19
1. Record the release commit and the actual published versions of both templates, app-client and app-skills. Resolve the intended public registry/channel once with `npm view <template> dist-tags --json --registry=https://registry.npmjs.org`
packages/app/app-skills/skills/nocobase-deployment/SKILL.md
- Network accessline 61
For templates supporting `CDN_BASE_URL` in `vite.config.ts`, set it before building, for example `CDN_BASE_URL=https://cdn.example.com/my-app/v1/ pnpm build --target linux-x64 --tar`. Use a full HTTPS URL ending in `/`. `pnpm build` reads t - Network accessline 65
For a Docker source build, pass `--build-arg CDN_BASE_URL=https://cdn.example.com/my-app/v1/`; the host's `.env` does not enter the build. With `DIST=prebuilt`, configure the earlier `pnpm build` instead. A prebuilt image's build argument o - Network accessline 96
For every required commercial backend package, automatically probe its metadata at `https://pkg-v3.nocobase.com/` using existing credentials and command-local global/scoped registry overrides, check runtime/peer compatibility and install/re - Network accessline 113
npx --registry=https://registry.npmjs.org @nocobase/app-installer@beta install /srv/nocobase/crm --archive /tmp/crm.tar.gz --origin https://apps.example.com - Network accessline 114
npx --registry=https://registry.npmjs.org @nocobase/app-installer@beta upgrade --dir /srv/nocobase/crm --archive /tmp/crm.tar.gz - Network accessline 147
[Credential-related source omitted]
packages/app/app-skills/skills/nocobase-deployment/references/deploy-to-studio.md
- Access to secretsline 115
[Credential-related source omitted]
packages/libs/drive/skills/nocobase-drive/references/custom-drivers.md
- Network accessline 7
Implement `CustomDriver` in your application or import it from a driver package. It must implement `DriverContract` from `flydrive/types`, including streaming, metadata, visibility, URLs, and listing as well as ordinary reads and writes. Se
packages/libs/drive/skills/nocobase-drive/references/fs.md
- Network accessline 50
location: '/srv/app/storage/public', visibility: 'public', url: 'https://files.example.com/uploads', - Network accessline 51
visibility: 'public', url: 'https://files.example.com/uploads', } satisfies import('@nocobase/drive').FsDriveDiskConfig; - Network accessline 52
url: 'https://files.example.com/uploads', - Network accessline 56
With this disk, `getUrl('images/a b.png')` returns `https://files.example.com/uploads/images/a%20b.png`. A URL base such as `/my-app/storage` is also supported; include the application's base path when needed. Setting `url` only constructs
packages/libs/drive/skills/nocobase-drive/references/oss.md
- Network accessline 26
The role is discovered automatically unless `roleName` is provided. Only hardened metadata mode is supported: the runtime, including containers, must reach `http://100.100.100.200` and obtain a metadata token. A container or ACK deployment - Network accessline 57
Grant `oss:ListObjects` on `acs:oss:*:*:your-bucket` and `oss:GetObject`, `oss:PutObject`, and `oss:DeleteObject` on `acs:oss:*:*:your-bucket/*`, limited to the paths the application needs. Copy requires source read and destination write ac - Network accessline 65
`region` includes the `oss-` prefix and must match the bucket. With `internal: false` (default), operations and links use `https://your-bucket.oss-cn-hangzhou.aliyuncs.com`. With `internal: true`, both use `https://your-bucket.oss-cn-hangzh - Network accessline 67
Optional `domain: https://files.example.com` overrides operation and link hosts, taking priority over `internal`. It must be an HTTPS origin without a path, query or credentials, bound to the selected bucket in OSS with a valid certificate.
packages/libs/drive/skills/nocobase-drive/references/s3.md
packages/plugins/app-plugin-agents/skills/nocobase-app-plugin-agents/references/distribution.md
- Network accessline 49
# The CLI alone, with a download token any signed-in person mints (one platform, three downloads within 30 minutes): curl -fsSL https://app.example.com/api/agents/dist/installScript | sh -s -- --token <download token> - Dangerous shell operationline 50
curl -fsSL https://app.example.com/api/agents/dist/installScript | sh -s -- --token <download token> - Network accessline 50
curl -fsSL https://app.example.com/api/agents/dist/installScript | sh -s -- --token <download token> - Network accessline 52
# A runtime: also installs nocobase-runner, registers it and starts it as a user service. "Add runtime" shows this line: curl -fsSL https://app.example.com/api/agents/dist/installScript | sh -s -- --runner --server https://app.example.com - - Dangerous shell operationline 53
curl -fsSL https://app.example.com/api/agents/dist/installScript | sh -s -- --runner --server https://app.example.com --token <registration token> - Network accessline 53
curl -fsSL https://app.example.com/api/agents/dist/installScript | sh -s -- --runner --server https://app.example.com --token <registration token> - Network accessline 74
npm install -g @nocobase/agent-runner nocobase-runner register --server https://app.example.com --token <registration token> - Network accessline 75
nocobase-runner register --server https://app.example.com --token <registration token>
packages/plugins/app-plugin-api-keys/skills/nocobase-app-plugin-api-keys/SKILL.md
- Network accessline 14
This package is Better Auth's [API Key plugin](https://www.better-auth.com/docs/plugins/api-key) plus the - Network accessline 15
[API Key plugin](https://www.better-auth.com/docs/plugins/api-key) plus the - Network accessline 78
[Credential-related source omitted] - Network accessline 146
[Credential-related source omitted] - Network accessline 147
[Credential-related source omitted] - Network accessline 148
[Credential-related source omitted]
packages/plugins/app-plugin-authentication/skills/nocobase-app-plugin-authentication/references/adding-sign-in-methods.md
packages/plugins/app-plugin-authentication/skills/nocobase-app-plugin-authentication/references/authentication-email.md
packages/plugins/app-plugin-demo-mode/skills/nocobase-app-plugin-demo-mode/assets/minimal-demo/client/pages/demo-projects.tsx
- Executable scriptline 1
Executable file
packages/plugins/app-plugin-demo-mode/skills/nocobase-app-plugin-demo-mode/assets/minimal-demo/database/main/migrations/202610220001_example_demo_projects.ts
- Executable scriptline 1
Executable file
packages/plugins/app-plugin-demo-mode/skills/nocobase-app-plugin-demo-mode/assets/minimal-demo/server/demo/business.ts
- Executable scriptline 1
Executable file
packages/plugins/app-plugin-demo-mode/skills/nocobase-app-plugin-demo-mode/assets/minimal-demo/server/demo/dataset.ts
- Executable scriptline 1
Executable file
packages/plugins/app-plugin-demo-mode/skills/nocobase-app-plugin-demo-mode/assets/minimal-demo/server/providers/demo.ts
- Executable scriptline 1
Executable file
packages/plugins/app-plugin-demo-mode/skills/nocobase-app-plugin-demo-mode/assets/minimal-demo/server/routes/demo-projects.ts
- Executable scriptline 1
Executable file
packages/plugins/app-plugin-i18n/skills/nocobase-app-plugin-i18n/SKILL.md
- Broad permissionsline 1
Bash, Read, Write, Edit, Grep, Glob
packages/plugins/app-plugin-mail/skills/nocobase-app-plugin-mail/SKILL.md
- Broad permissionsline 1
Read, Grep, Glob, Bash
packages/plugins/app-plugin-mail/skills/nocobase-app-plugin-mail/references/configuration-and-accounts.md
- Network accessline 95
Official references: [Gmail API quotas and quota-increase guidance](https://developers.google.com/workspace/gmail/api/reference/quota?hl=zh-cn). [verified: 2026-09-26] - Network accessline 113
The default callback is the app-local `/mail/oauth/callback`. Mail combines `app.publicOrigin` (or the request origin) with `app.publicBasePath` and that path. An application mounted at `/main` with origin `https://mail.example.com` uses: - Network accessline 116
https://mail.example.com/main/mail/oauth/callback - Network accessline 133
With origin `https://mail.example.com` and public base path `/main`, the provider must redirect to `https://mail.example.com/main/mail/oauth/callback`, and the browser will finish at `https://mail.example.com/main/mail/accounts?mailAuthoriz - Network accessline 149
For example, base `https://mail.example.com/main/mail/webhooks`, type `gmail`, and instance `google` produce `https://mail.example.com/main/mail/webhooks/gmail/google/<secret>`.
packages/plugins/app-plugin-mail/skills/nocobase-app-plugin-mail/references/synchronization-and-diagnostics.md
- Network accessline 33
Official references: [Gmail API quotas and retry guidance](https://developers.google.com/workspace/gmail/api/reference/quota?hl=zh-cn) and [HTTP batch behavior and limits](https://developers.google.com/workspace/gmail/api/guides/batch?hl=zh
packages/plugins/app-plugin-notification-in-app/README.md
- Access to secretsline 40
[Credential-related source omitted] - Network accessline 115
Pass `target: { type: 'route', path: '/topics/123' }` for application navigation. Do not include the deployment prefix: the inbox Router adds its basename. Pass `target: { type: 'url', url: 'https://example.com/main/topics/123' }` for a com
packages/plugins/app-plugin-notification-in-app/skills/nocobase-app-plugin-notification-in-app/SKILL.md
- Broad permissionsline 1
Bash, Read, Write, Grep, Glob
packages/plugins/app-plugin-notification-in-app/skills/nocobase-app-plugin-notification-in-app/references/inbox-integration.md
- Network accessline 75
Use `target: { type: 'route', path: '/topics/123' }` for an internal route without the deployment prefix, or `target: { type: 'url', url: 'https://example.com/main/topics/123' }` for a complete HTTP(S) URL. The inbox adds the Router basenam
packages/plugins/app-plugin-notification/skills/nocobase-app-plugin-notification/SKILL.md
- Broad permissionsline 1
Bash, Read, Write, Grep, Glob
packages/plugins/app-plugin-notification/skills/nocobase-app-plugin-notification/references/channel-and-provider-extensions.md
- Network accessline 126
}: ChannelSendInput<TeamMessage>): Promise<ChannelSendResult> { try { const response = await fetch(this.config.endpoint, { - Network accessline 127
try { const response = await fetch(this.config.endpoint, { method: 'POST', - Network accessline 128
const response = await fetch(this.config.endpoint, { - Network accessline 196
team-alerts: type: team-webhook endpoint: https://hooks.example.com/notify - Network accessline 197
[Credential-related source omitted] - Network accessline 198
endpoint: https://hooks.example.com/notify
packages/plugins/app-plugin-notification/skills/nocobase-app-plugin-notification/references/integration-and-configuration.md
- Network accessline 26
ops-feishu: type: feishu-webhook webhookUrl: https://open.feishu.cn/open-apis/bot/v2/hook/replace-with-the-token - Network accessline 27
type: feishu-webhook webhookUrl: https://open.feishu.cn/open-apis/bot/v2/hook/replace-with-the-token inbox: - Network accessline 28
webhookUrl: https://open.feishu.cn/open-apis/bot/v2/hook/replace-with-the-token - Access to secretsline 38
[Credential-related source omitted]
packages/plugins/app-plugin-notification/skills/nocobase-app-plugin-notification/references/sending-notifications.md
- Network accessline 16
'ops-feishu': { text: 'Approved', target: { type: 'url', url: 'https://example.com/main/approvals/123' }, - Network accessline 17
text: 'Approved', target: { type: 'url', url: 'https://example.com/main/approvals/123' }, }, - Network accessline 18
target: { type: 'url', url: 'https://example.com/main/approvals/123' },
packages/plugins/app-plugin-template-print/skills/nocobase-app-plugin-template-print/SKILL.md
- Broad permissionsline 1
Bash, Read, Write, Grep, Glob
packages/plugins/app-plugin-template-print/skills/nocobase-app-plugin-template-print/references/rendering.md
- Network accessline 28
The [official embedded Node API](https://carbone.io/documentation/developer/embedding/embedding-in-node.html) documents `render`, `addFormatters`, buffer/path return modes, and LibreOffice requirements. [verified: 2026-09-22] Check the sele
skills/nocobase-app-installer/SKILL.md
- Network accessline 15
npx --yes --registry="${NOCOBASE_REGISTRY:-https://registry.npmjs.org}" @nocobase/app-installer@beta <command> … --json - Network accessline 72
1. Check the machine: `node --version` (24 or later) and `command -v pm2`, which finds pm2 without starting its daemon. pm2 4.3 or later has to be installed globally, `npm install -g pm2`; a copy fetched through `npx` breaks `pm2 startup`. - Network accessline 73
2. Settle with the user: the target directory, new or empty, such as `/srv/nocobase/crm`; the public origin without the base path, such as `https://apps.example.com`, which may be left out for a machine reached only at `http://127.0.0.1:<po
skills/nocobase-app-installer/references/remote-deployment.md
- Network accessline 22
npx --yes --registry="${NOCOBASE_REGISTRY:-https://registry.npmjs.org}" @nocobase/app-installer@beta deploy \ - Network accessline 24
--archive storage/exports/dist.tar.gz --origin https://app.example.com --json - Network accessline 36
npx --yes --registry="${NOCOBASE_REGISTRY:-https://registry.npmjs.org}" @nocobase/app-installer@beta deploy \
skills/nocobase-create-app/SKILL.md
- Network accessline 36
(cd <parent-directory> && PNPM_CONFIG_MINIMUM_RELEASE_AGE=0 npm_config_registry="${NOCOBASE_REGISTRY:-https://registry.npmjs.org}" pnpm create @nocobase/app@beta <name> --template-tag=beta --json) - Network accessline 82
The last of the `nextCommands`, `pnpm dev`, does not exit. Run it in the background and wait for the URL it prints: it prints a `Local:` line only once the application is ready, and the URL includes the application's path, such as `/main/`. - Dangerous shell operationline 115
| `Could not locate the bindings file` | No prebuilt `better-sqlite3` binary matches this platform. Install a C++ toolchain, set `better-sqlite3: true` under `allowBuilds` in `pnpm-workspace.yaml`, then run `rm -rf node_modu - Network accessline 119
For an application walkthrough, see https://github.com/nocobase/nocobase/blob/v3-develop/docs/docs/en/capabilities/quick-start.md.
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 500 facts
- Network access in code of the SKILL.mdnocobase-app-development/SKILL.md:111High confidence
- Executable script in code of a file that runsnocobase-app-development/assets/business-examples/onboarding/cli/commands/onboarding-reset.ts:1High confidence
- Executable script in code of a file that runsnocobase-app-development/assets/business-examples/onboarding/client/pages/onboarding/choice.tsx:1High confidence
- Executable script in code of a file that runsnocobase-app-development/assets/business-examples/onboarding/client/pages/onboarding/index.tsx:1High confidence
- Executable script in code of a file that runsnocobase-app-development/assets/business-examples/onboarding/client/pages/onboarding/locales.ts:1High confidence
- Executable script in code of a file that runsnocobase-app-development/assets/business-examples/onboarding/client/pages/onboarding/wizard.tsx:1High confidence
- Executable script in code of a file that runsnocobase-app-development/assets/business-examples/onboarding/database/main/migrations/202611050001_create_onboarding.ts:1High confidence
- Executable script in code of a file that runsnocobase-app-development/assets/business-examples/onboarding/database/main/seeds/202611050001_onboarding.ts:1High confidence
- Executable script in code of a file that runsnocobase-app-development/assets/business-examples/onboarding/database/main/seeds/202611050002_onboarding_samples.ts:1High confidence
- Executable script in code of a file that runsnocobase-app-development/assets/business-examples/onboarding/server/lifecycles/onboarding.ts:1High confidence
- Executable script in code of a file that runsnocobase-app-development/assets/business-examples/onboarding/server/providers/onboarding-registration.ts:1High confidence
- Executable script in code of a file that runsnocobase-app-development/assets/business-examples/onboarding/server/providers/onboarding-reset.ts:1High confidence
- Executable script in code of a file that runsnocobase-app-development/assets/business-examples/onboarding/server/providers/onboarding.ts:1High confidence
- Executable script in code of a file that runsnocobase-app-development/assets/business-examples/onboarding/server/routes/onboarding.ts:1High confidence
- Executable script in code of a file that runsnocobase-app-development/assets/business-examples/onboarding/shared/onboarding.ts:1High confidence
- Executable script in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/client/onboarding.test.tsx:1Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/client/onboarding.test.tsx:18Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/client/onboarding.test.tsx:19Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/client/onboarding.test.tsx:20Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/client/onboarding.test.tsx:312Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/client/onboarding.test.tsx:313Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/client/onboarding.test.tsx:314Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/client/onboarding.test.tsx:385Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/client/onboarding.test.tsx:386Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/client/onboarding.test.tsx:387Low confidence
- Executable script in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/database/onboarding.test.ts:1Low confidence
- Executable script in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/playwright/onboarding.test.ts:1Low confidence
- Executable script in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:1Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:26Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:27Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:28Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:41Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:42Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:43Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:102Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:103Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:104Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:107Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:108Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:109Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:114Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:115Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:116Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:130Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:131Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:132Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:133Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:134Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:140Low confidence
- Network access in code of a testnocobase-app-development/assets/business-examples/onboarding/tests/server/onboarding.test.ts:141Low confidence
and 450 more
Only the first 500 facts are listed.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Path .claude/settings.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Native | Path packages/templates/app-template-default/.cursor/mcp.json | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md packages/app/app-cli-client/tests/fixtures/packaged-cli/skills/nb-studio-cli/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md packages/app/app-cli-client/tests/fixtures/packaged-cli/skills/nb-studio-cli/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md packages/app/app-cli-client/tests/fixtures/packaged-cli/skills/nb-studio-cli/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/nocobase-nocobase/)