minutework 0.1.12 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,6 +13,9 @@ Read these exported skills before making MinuteWork-specific architecture
13
13
  decisions from a generated workspace:
14
14
 
15
15
  - `skills/generated-workspace-architecture.md`
16
+ - `skills/shell-architecture.md` when the request touches member-facing UI,
17
+ operator workflows, threads, channels, cards, dashboards, approvals, or "do
18
+ we need a separate frontend?" questions
16
19
  - `skills/runtime-capability-inventory.md`
17
20
  - `skills/layering-and-import-modes.md`
18
21
  - `skills/capability-gap-reporting.md`
@@ -23,6 +26,28 @@ decisions from a generated workspace:
23
26
  - `skills/email-ingress-and-thread-routing.md` when the request touches inboxes,
24
27
  aliases, email/SMS/chat routing, or thread-based communication
25
28
 
29
+ ## Shell-First UI Default
30
+
31
+ - For member-facing collaboration and operator work, check shell fit first.
32
+ - The primary collaboration surface is the gateway shell under
33
+ `/w/[workspace_slug]`, not a bespoke standalone tenant frontend.
34
+ - First ask whether the request should be a shell extension:
35
+ - thread metadata
36
+ - cards / attachments in the thread stream
37
+ - agent skills in thread context
38
+ - contextual right-rail detail
39
+ - server-level shared state or catalogs
40
+ - Only propose standalone `tenant-app` UI after explicitly checking shell fit
41
+ and documenting why the request is an exception.
42
+ - If shell fit is correct but the generated workspace cannot directly author the
43
+ needed shell extension, keep the shell-first proposal and record a capability
44
+ gap instead of silently falling back to standalone `tenant-app`.
45
+ - Common exception paths are:
46
+ - public marketing
47
+ - public intake for non-members
48
+ - embeddable widget
49
+ - explicit request for a separate standalone client/app
50
+
26
51
  ## Starter Choice Matrix
27
52
 
28
53
  The shipped product unit is an `app pack`. `tenant-app` and `sidecar` are
@@ -30,7 +55,7 @@ implementation surfaces inside that pack.
30
55
 
31
56
  | If the request is mainly about... | Choose | Why |
32
57
  | --- | --- | --- |
33
- | Authenticated web UI, dashboard, forms, settings, tenant portal | `tenant-app` | This is the Next.js UI/BFF surface. |
58
+ | Authenticated standalone web UI, separate tenant portal, custom client, or other explicit shell exception | `tenant-app` | This is the Next.js UI/BFF surface after shell fit has been checked. |
34
59
  | Public website, pricing, docs, blog, landing pages | `tenant-app` | Public web belongs in the web app surface; do not create a sidecar just to render pages. |
35
60
  | Internal API, webhook handler, worker, cron, queue consumer, ingestion, Python-heavy compute | `sidecar` | This is backend/runtime logic, not a browser app concern. |
36
61
  | Web app plus background jobs, integrations, AI processing, or internal APIs | `both` | Put UI in `tenant-app`; put backend execution in `sidecar`. |
@@ -39,7 +64,9 @@ implementation surfaces inside that pack.
39
64
 
40
65
  ## Default Rule
41
66
 
42
- If unsure, start with `tenant-app`.
67
+ If unsure, check shell fit first. Only start with `tenant-app` after the request
68
+ has been confirmed to be a public surface or an explicit standalone-shell
69
+ exception.
43
70
 
44
71
  Prefer declarative schema/manifests first. Add `sidecar` only when you can name
45
72
  a concrete backend responsibility such as:
@@ -22,6 +22,7 @@ receive:
22
22
  Generated-workspace-first guidance should live here, especially:
23
23
 
24
24
  - `generated-workspace-architecture.md`
25
+ - `shell-architecture.md`
25
26
  - `runtime-capability-inventory.md`
26
27
  - `layering-and-import-modes.md`
27
28
  - `capability-gap-reporting.md`
@@ -8,6 +8,15 @@ An `app pack` is the shipped product unit.
8
8
  - Start with declarative schema/manifests and add code surfaces only when needed.
9
9
  - Use `tenant-app` for the combined public-site plus private-app web surface.
10
10
  - Use `sidecar` for internal APIs, workers, integrations, or Python-heavy compute.
11
+ - For member-facing collaboration and operator workflows, check shell fit first
12
+ before proposing standalone `tenant-app` routes or dashboards.
13
+ - Prefer thread metadata, cards/attachments, agent skills, right-rail detail,
14
+ and server-level state when the request belongs inside the shell.
15
+ - Only use standalone `tenant-app` UI by default for public surfaces or when the
16
+ request explicitly asks for a separate client/app.
17
+ - If shell fit is correct but this generated workspace cannot directly author
18
+ the shell extension, record a capability gap instead of silently turning the
19
+ request into a standalone `tenant-app` exception.
11
20
  - Treat `mw.core.site` as a runtime baseline capability and compose against it
12
21
  instead of trying to install it from the workspace.
13
22
  - Reuse existing runtime AI capabilities before adding direct model/provider
@@ -17,6 +17,16 @@ the monorepo or a live tenant runtime.
17
17
  - `tenant-app` and optional `sidecar` are implementation surfaces inside the
18
18
  tenant product, not the whole architecture.
19
19
  - `tenant-app` is the combined public plus private web starter.
20
+ - For member-facing collaboration and operator work, the primary product surface
21
+ is the gateway shell under `/w/[workspace_slug]`. Do not default to a bespoke
22
+ standalone tenant frontend when the work belongs in shell threads, cards, or
23
+ metadata.
24
+ - Public routes and explicit standalone-client exceptions still belong in
25
+ `tenant-app`; check shell fit first before taking that path.
26
+ - If shell fit is correct but this generated workspace cannot directly author
27
+ the needed shell extension, keep the shell-first proposal and record a
28
+ capability gap instead of silently converting the work into standalone
29
+ `tenant-app` UI.
20
30
  - External collaboration is a first-class system pattern. Do not treat guest
21
31
  participants, inbound aliases, or shared threads as ad hoc product features.
22
32
  - `mw.core.site` is a runtime baseline capability; public site authoring should
@@ -0,0 +1,58 @@
1
+ # Shell Architecture
2
+
3
+ Use this skill when the request touches member-facing UI, operator workflows,
4
+ threads, channels, inboxes, guest collaboration, approvals, dashboards, or
5
+ "should this be a separate frontend?" questions.
6
+
7
+ - Default to the member shell first. For collaboration and operator work, the
8
+ primary product surface is the gateway shell under `/w/[workspace_slug]`, not
9
+ a bespoke standalone tenant frontend.
10
+ - Treat these nouns as the default mental model:
11
+ - **Server**: the product-facing private tenant space
12
+ - **Channel**: a conversation surface inside the shell
13
+ - **Thread**: the unit of work inside a channel
14
+ - **Entry / attachment / card**: the UI that renders inside a thread stream
15
+ - **Member / guest / shadow participant**: visibility and participation roles
16
+ - **Agent**: may appear as a shell channel in the current shell model
17
+ - Current shell truth:
18
+ - the shell is the **primary** collaboration surface, not literally the only
19
+ UI in the repo
20
+ - `/w/[workspace_slug]` redirects into the channel shell routes
21
+ - the current v3 shell implements a left rail, sidebar, main thread area, and
22
+ right rail
23
+ - the current shell proves a fixed agent-like channel set (`superagent`,
24
+ `builder`, `website-admin`); do not assume arbitrary runtime agents already
25
+ auto-materialize as channels unless code or runtime inventory proves it
26
+ - For member-facing operator work, first ask whether the request fits as a shell
27
+ extension:
28
+ - thread metadata extension
29
+ - rich message card / attachment
30
+ - agent skill invoked in thread context
31
+ - server-level shared state or catalog
32
+ - right-panel contextual detail
33
+ - Do **not** default to standalone `/app/*` dashboards or object-management
34
+ routes when the work belongs in threads, cards, metadata, or agent-driven
35
+ conversation.
36
+ - Standalone `tenant-app` UI is an exception path, not the first proposal.
37
+ Consider it when:
38
+ - the user explicitly asks for a separate standalone client
39
+ - the surface is public marketing
40
+ - the surface is public intake for non-members
41
+ - the surface is an embeddable widget
42
+ - If shell fit is correct but this generated workspace cannot directly author
43
+ the shell extension, keep the shell-first recommendation and record a
44
+ capability gap instead of silently converting the request into standalone
45
+ `tenant-app` UI.
46
+ - Be precise about terminology:
47
+ - product/server space: **Server** / **Tenant** in platform docs and models
48
+ - generated local repo: **developer workspace**
49
+ - Do not overclaim current platform reality:
50
+ - shell-first is the intended default
51
+ - the current shell still has static/mock sections and fixed routes
52
+ - not every right-rail or agent/channel extension is a generalized registry
53
+ yet
54
+ - When in doubt, inspect:
55
+ - frontend shell routes and components
56
+ - platform `channels` / `threads` models
57
+ - runtime `ThreadRuntimeBinding` and thread-post models
58
+ - shadow/public-intake/reference contracts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "minutework",
3
- "version": "0.1.12",
3
+ "version": "0.1.14",
4
4
  "description": "MinuteWork CLI for workspace scaffolding, local preview workflows, and hosted preview deploys.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -13,18 +13,6 @@
13
13
  "assets",
14
14
  "EXTERNAL_ALPHA.md"
15
15
  ],
16
- "scripts": {
17
- "prepare:schema-compiler": "pnpm --dir ../minutework-schema-compiler build",
18
- "prepare:workspace-mcp": "pnpm run prepare:schema-compiler && pnpm --dir ../minutework-workspace-mcp build && node ./scripts/sync-vendored-workspace-mcp.mjs",
19
- "prepare:assets": "node ./scripts/sync-template-assets.mjs",
20
- "build": "pnpm run prepare:workspace-mcp && pnpm run prepare:assets && tsc -p tsconfig.build.json",
21
- "lint": "pnpm run prepare:schema-compiler && pnpm run prepare:workspace-mcp && tsc -p tsconfig.json --noEmit",
22
- "prepack": "pnpm run build",
23
- "smoke:packed-install": "node ./scripts/verify-packed-install.mjs",
24
- "smoke:starter": "node ./scripts/starter-smoke.mjs",
25
- "test": "pnpm run prepare:schema-compiler && pnpm run prepare:workspace-mcp && pnpm run prepare:assets && vitest run tests",
26
- "typecheck": "pnpm run prepare:schema-compiler && pnpm run prepare:workspace-mcp && tsc -p tsconfig.json --noEmit"
27
- },
28
16
  "engines": {
29
17
  "node": ">=18"
30
18
  },
@@ -33,14 +21,25 @@
33
21
  },
34
22
  "dependencies": {
35
23
  "@modelcontextprotocol/sdk": "^1.28.0",
36
- "@minutework/platform-config": "workspace:*",
37
- "@minutework/schema-compiler": "workspace:*",
38
24
  "jiti": "^2.6.1",
39
- "zod": "^4.3.6"
25
+ "zod": "^4.3.6",
26
+ "@minutework/platform-config": "0.1.0",
27
+ "@minutework/schema-compiler": "0.1.0"
40
28
  },
41
29
  "devDependencies": {
42
30
  "@types/node": "^24.9.1",
43
31
  "typescript": "^5.9.3",
44
32
  "vitest": "^3.2.4"
33
+ },
34
+ "scripts": {
35
+ "prepare:schema-compiler": "pnpm --dir ../minutework-schema-compiler build",
36
+ "prepare:workspace-mcp": "pnpm run prepare:schema-compiler && pnpm --dir ../minutework-workspace-mcp build && node ./scripts/sync-vendored-workspace-mcp.mjs",
37
+ "prepare:assets": "node ./scripts/sync-template-assets.mjs",
38
+ "build": "pnpm run prepare:workspace-mcp && pnpm run prepare:assets && tsc -p tsconfig.build.json",
39
+ "lint": "pnpm run prepare:schema-compiler && pnpm run prepare:workspace-mcp && tsc -p tsconfig.json --noEmit",
40
+ "smoke:packed-install": "node ./scripts/verify-packed-install.mjs",
41
+ "smoke:starter": "node ./scripts/starter-smoke.mjs",
42
+ "test": "pnpm run prepare:schema-compiler && pnpm run prepare:workspace-mcp && pnpm run prepare:assets && vitest run tests",
43
+ "typecheck": "pnpm run prepare:schema-compiler && pnpm run prepare:workspace-mcp && tsc -p tsconfig.json --noEmit"
45
44
  }
46
- }
45
+ }
File without changes