codeapp-js 0.3.0 → 1.0.1
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.
- package/AI/codeapp.agent.md +105 -0
- package/AI/skills/connections/SKILL.md +47 -0
- package/AI/skills/dataverse/SKILL.md +99 -0
- package/AI/skills/environment-variables/SKILL.md +89 -0
- package/AI/skills/frontend-design/SKILL.md +34 -0
- package/AI/skills/jira/SKILL.md +81 -0
- package/AI/skills/office365-groups/SKILL.md +61 -0
- package/AI/skills/office365-outlook/SKILL.md +52 -0
- package/AI/skills/office365-users/SKILL.md +78 -0
- package/AI/skills/sharepoint/SKILL.md +77 -0
- package/AI/skills/sql/SKILL.md +85 -0
- package/AI/skills/start/SKILL.md +46 -0
- package/AI/skills/teams/SKILL.md +55 -0
- package/{examples/combined demo/.power/schemas/office365groups/office365groups.Schema.json → codeApp/.power/schemas/office365groups/office365groups.Schema.json} +2203 -2203
- package/codeApp/dist/codeapp.js +95 -1792
- package/codeApp/dist/connectors/azureKeyvault.js +459 -0
- package/codeApp/dist/connectors/jira.js +1247 -0
- package/codeApp/dist/connectors/office365groups.js +642 -0
- package/codeApp/dist/connectors/office365users.js +513 -0
- package/codeApp/dist/connectors/outlook.js +1393 -0
- package/codeApp/dist/connectors/sharepoint.js +466 -0
- package/codeApp/dist/connectors/sql.js +149 -0
- package/codeApp/dist/connectors/teams.js +280 -0
- package/codeApp/dist/power-apps-data.js +16 -2
- package/examples/{kanban → apps/kanban}/dist/dataverse.js +94 -94
- package/examples/{kanban → apps/kanban}/dist/environmentVar.js +55 -55
- package/examples/{kanban → apps/kanban}/dist/index.css +605 -605
- package/examples/{kanban → apps/kanban}/dist/index.html +21 -21
- package/examples/{kanban → apps/kanban}/dist/index.js +860 -860
- package/examples/{kanban → apps/kanban}/dist/office365groups.js +97 -97
- package/examples/apps/kanban/dist/office365users.js +451 -0
- package/examples/{kanban → apps/kanban}/dist/outlook.js +162 -162
- package/examples/{planning Poker/dist/power-apps-data.js → apps/kanban/dist/power-apps-data.js} +2953 -2953
- package/examples/{kanban → apps/kanban}/dist/sharepoint.js +435 -339
- package/examples/{kanban → apps/kanban}/power.config.json +35 -35
- package/examples/{planning Poker → apps/planning Poker}/additional files/customizations (tables).xml +6428 -6428
- package/examples/{planning Poker → apps/planning Poker}/additional files/dataverse-tables.json +165 -165
- package/examples/{planning Poker → apps/planning Poker}/additional files/readme.md +122 -122
- package/examples/{planning Poker → apps/planning Poker}/dist/dataverse.js +78 -78
- package/examples/{planning Poker → apps/planning Poker}/dist/index.html +198 -198
- package/examples/{planning Poker → apps/planning Poker}/dist/index.js +954 -954
- package/examples/{todo/dist/power-apps-data.js → apps/planning Poker/dist/power-apps-data.js } +2953 -2953
- package/examples/{planning Poker → apps/planning Poker}/dist/styles.css +815 -815
- package/examples/{planning Poker → apps/planning Poker}/power.config.json +50 -50
- package/examples/{outlook Demo2 → apps/solution explorer}/dist/codeapp.js +9 -245
- package/examples/apps/solution explorer/dist/index.html +80 -0
- package/examples/apps/solution explorer/dist/index.js +735 -0
- package/examples/apps/solution explorer/dist/styles.css +571 -0
- package/examples/apps/solution explorer/power.config.json +151 -0
- package/examples/{todo → apps/todo}/dist/dataverse.js +64 -64
- package/examples/{todo → apps/todo}/dist/index.html +75 -75
- package/examples/{todo → apps/todo}/dist/index.js +8 -8
- package/examples/{kanban → apps/todo}/dist/power-apps-data.js +2953 -2953
- package/examples/{todo → apps/todo}/dist/renderer.js +375 -375
- package/examples/{todo → apps/todo}/dist/styles.css +691 -691
- package/examples/{todo → apps/todo}/power.config.json +34 -34
- package/examples/combined demo/.power/schemas/appschemas/dataSourcesInfo.ts +6275 -7830
- package/examples/combined demo/.power/schemas/jira/jira.Schema.json +6903 -0
- package/examples/combined demo/.power/schemas/keyvault/keyvault.Schema.json +1600 -0
- package/examples/combined demo/.power/schemas/teams/teams.Schema.json +11112 -0
- package/examples/combined demo/dist/codeapp.js +394 -1098
- package/examples/{outlook Demo2/OutlookDemo_1_0_0_1.zip → combined demo/dist/icon-512.png} +0 -0
- package/examples/combined demo/dist/index.html +29 -511
- package/examples/combined demo/dist/index.js +490 -470
- package/examples/combined demo/dist/office365users.js +513 -0
- package/examples/combined demo/dist/outlook.js +1393 -0
- package/examples/combined demo/dist/power-apps-data.js +3079 -3006
- package/examples/combined demo/dist/styles.css +483 -0
- package/examples/combined demo/power.config.json +33 -42
- package/examples/combined demo/src/generated/index.ts +12 -14
- package/examples/combined demo/src/generated/models/AzureKeyVaultModel.ts +107 -0
- package/examples/combined demo/src/generated/models/JiraModel.ts +501 -0
- package/examples/combined demo/src/generated/services/AzureKeyVaultService.ts +257 -0
- package/examples/combined demo/src/generated/services/JiraService.ts +1124 -0
- package/examples/dataverse Demo/dist/codeapp.js +394 -1085
- package/examples/dataverse Demo/dist/icon-512.png +0 -0
- package/examples/dataverse Demo/dist/index.html +146 -54
- package/examples/dataverse Demo/dist/index.js +693 -83
- package/examples/dataverse Demo/dist/power-apps-data.js +3079 -2911
- package/examples/dataverse Demo/dist/styles.css +528 -0
- package/examples/dataverse Demo/power.config.json +41 -35
- package/examples/dataverse Demo/readme.md +79 -79
- package/examples/groups Demo/dist/codeapp.js +394 -1085
- package/examples/groups Demo/dist/icon-512.png +0 -0
- package/examples/groups Demo/dist/index.html +21 -25
- package/examples/groups Demo/dist/index.js +304 -113
- package/examples/groups Demo/dist/office365groups.js +642 -0
- package/examples/groups Demo/dist/power-apps-data.js +3079 -2911
- package/examples/groups Demo/dist/styles.css +509 -0
- package/examples/groups Demo/power.config.json +25 -25
- package/examples/myProfile/dist/codeapp.js +398 -0
- package/examples/myProfile/dist/index.html +21 -184
- package/examples/myProfile/dist/index.js +324 -141
- package/examples/myProfile/dist/office365users.js +517 -169
- package/examples/myProfile/dist/power-apps-data.js +3080 -2953
- package/examples/myProfile/dist/styles.css +458 -0
- package/examples/myProfile/power.config.json +24 -23
- package/examples/outlook Demo/dist/codeapp.js +394 -1085
- package/examples/outlook Demo/dist/index.html +150 -35
- package/examples/outlook Demo/dist/index.js +516 -170
- package/examples/outlook Demo/dist/outlook.js +1393 -121
- package/examples/outlook Demo/dist/power-apps-data.js +3079 -2911
- package/examples/outlook Demo/dist/styles.css +408 -84
- package/examples/outlook Demo/power.config.json +24 -23
- package/examples/outlook Demo/readme.md +92 -82
- package/examples/sharePoint Demo/dist/codeapp.js +394 -1085
- package/examples/sharePoint Demo/dist/icon-512.png +0 -0
- package/examples/sharePoint Demo/dist/index.html +22 -255
- package/examples/sharePoint Demo/dist/index.js +899 -262
- package/examples/sharePoint Demo/dist/power-apps-data.js +3079 -2911
- package/{dev files → examples/sharePoint Demo/dist}/sharepoint.js +239 -112
- package/examples/sharePoint Demo/dist/styles.css +587 -0
- package/examples/sharePoint Demo/power.config.json +23 -22
- package/package.json +1 -1
- package/readme.md +465 -76
- package/.vscode/settings.json +0 -6
- package/dev files/customConnector.js +0 -98
- package/dev files/dataverse.js +0 -120
- package/dev files/environmentVar.js +0 -55
- package/dev files/office365groups.js +0 -65
- package/dev files/office365users.js +0 -169
- package/dev files/outlook.js +0 -330
- package/dev files/power-apps-data.js +0 -2952
- package/examples/combined demo/.power/schemas/office365/office365.Schema.json +0 -21098
- package/examples/combined demo/.power/schemas/office365users/office365users.Schema.json +0 -2094
- package/examples/kanban/agent/decision-log.md +0 -9
- package/examples/kanban/agent/mockup-01-editorial-glass.html +0 -159
- package/examples/kanban/agent/mockup-02-dark-rail.html +0 -147
- package/examples/kanban/agent/mockup-03-paper-grid.html +0 -114
- package/examples/kanban/agent/mockup-04-neon-minimal.html +0 -141
- package/examples/kanban/agent/mockup-05-mono-architect.html +0 -119
- package/examples/kanban/dist/office365users.js +0 -169
- package/examples/kanban/src/generated/index.ts +0 -14
- package/examples/kanban/src/generated/models/Office365GroupsModel.ts +0 -363
- package/examples/kanban/src/generated/models/Office365OutlookModel.ts +0 -2046
- package/examples/kanban/src/generated/models/Office365UsersModel.ts +0 -254
- package/examples/kanban/src/generated/services/Office365GroupsService.ts +0 -326
- package/examples/kanban/src/generated/services/Office365OutlookService.ts +0 -2476
- package/examples/kanban/src/generated/services/Office365UsersService.ts +0 -358
- package/examples/outlook Demo2/agent/decision-log.md +0 -7
- package/examples/outlook Demo2/dist/index.html +0 -98
- package/examples/outlook Demo2/dist/index.js +0 -272
- package/examples/outlook Demo2/dist/styles.css +0 -639
- package/examples/outlook Demo2/power.config.json +0 -23
- package/examples/planning Poker/.vscode/settings.json +0 -5
- package/examples/sharePoint Demo/agent/decision-log.md +0 -17
- /package/examples/{outlook Demo2 → apps/kanban}/src/generated/index.ts +0 -0
- /package/examples/{outlook Demo2 → apps/kanban}/src/generated/models/Office365GroupsModel.ts +0 -0
- /package/examples/{outlook Demo2 → apps/kanban}/src/generated/models/Office365OutlookModel.ts +0 -0
- /package/examples/{outlook Demo2 → apps/kanban}/src/generated/models/Office365UsersModel.ts +0 -0
- /package/examples/{outlook Demo2 → apps/kanban}/src/generated/services/Office365GroupsService.ts +0 -0
- /package/examples/{outlook Demo2 → apps/kanban}/src/generated/services/Office365OutlookService.ts +0 -0
- /package/examples/{outlook Demo2 → apps/kanban}/src/generated/services/Office365UsersService.ts +0 -0
- /package/examples/{planning Poker → apps/planning Poker}/additional files/AgilePoker_1_0_0_1.zip +0 -0
- /package/examples/{planning Poker → apps/planning Poker}/additional files/PokerTables_1_0_0_1.zip +0 -0
- /package/examples/{outlook Demo2 → apps/solution explorer}/dist/icon-512.png +0 -0
- /package/examples/{outlook Demo2 → apps/solution explorer}/dist/power-apps-data.js +0 -0
- /package/examples/{todo → apps/todo}/dist/icon192.png +0 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sharepoint
|
|
3
|
+
description: "Use when: building or debugging SharePoint list, library, file, or HTTP-request flows in a Power Apps Code App, including list-id or environment-variable-based setup."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SharePoint Connector Guide
|
|
7
|
+
|
|
8
|
+
> Agent limitation: do not use CLI commands directly from chat for SharePoint setup. Use the built-in Sync Connections and Deploy buttons instead.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
Before writing code, prefer these connection approaches:
|
|
13
|
+
|
|
14
|
+
- A: site URL + list ID
|
|
15
|
+
- B: environment variables that resolve the site URL and list ID
|
|
16
|
+
|
|
17
|
+
Do not ask the user for a list name as the primary CRUD identifier. If they only know the list name, use `listTables(...)` once to discover the connector table ID and then continue with list-ID operations.
|
|
18
|
+
|
|
19
|
+
## power.config.json
|
|
20
|
+
|
|
21
|
+
Expose `sharepointonline` in `connectionReferences`.
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"connectionReferences": {
|
|
26
|
+
"sharepointonline": {
|
|
27
|
+
"id": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline",
|
|
28
|
+
"displayName": "SharePoint",
|
|
29
|
+
"dataSources": ["sharepointonline"],
|
|
30
|
+
"dataSets": {}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
No Dataverse tables are needed unless the app also uses environment variables.
|
|
37
|
+
|
|
38
|
+
## Helper Surface
|
|
39
|
+
|
|
40
|
+
The wrapper in `dev files/sharepoint.js` exports:
|
|
41
|
+
|
|
42
|
+
- List ID pattern: `getItems`, `getSpItem`, `createSpItem`, `updateSpItem`, `deleteSpItem`
|
|
43
|
+
- Generic helpers: `callSharePointOperation`, `sendHttpRequest`, `listTables`, `listLibrary`
|
|
44
|
+
- File helpers: `createFile`, `updateFile`, `deleteFile`, `moveFile`, `getFileMetadata`
|
|
45
|
+
|
|
46
|
+
The list-ID helpers use the SharePoint connector table API. `sendHttpRequest(...)` remains available only as an advanced escape hatch when there is no dedicated helper for the operation you need.
|
|
47
|
+
|
|
48
|
+
## Important Corrections
|
|
49
|
+
|
|
50
|
+
- The single-item and CRUD helpers for the list-ID path are `getSpItem`, `createSpItem`, `updateSpItem`, and `deleteSpItem` in this repo.
|
|
51
|
+
- `sharepoint.js` encodes `siteUrl` internally with `encodeURIComponent(...)`. Do not pre-encode the URL before passing it in.
|
|
52
|
+
- For environment-variable based setup, import `getEnvironmentVariable(...)` from `./codeapp.js`, not from a separate `environmentVar.js` helper.
|
|
53
|
+
|
|
54
|
+
## Example Imports
|
|
55
|
+
|
|
56
|
+
Approach A:
|
|
57
|
+
|
|
58
|
+
```js
|
|
59
|
+
import { getItems, getSpItem, createSpItem, updateSpItem, deleteSpItem, listTables } from './sharepoint.js';
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Approach B:
|
|
63
|
+
|
|
64
|
+
```js
|
|
65
|
+
import { getItems, getSpItem, createSpItem, updateSpItem, deleteSpItem } from './sharepoint.js';
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Approach C:
|
|
69
|
+
|
|
70
|
+
```js
|
|
71
|
+
import { getEnvironmentVariable } from './codeapp.js';
|
|
72
|
+
import { getItems, createSpItem, updateSpItem, deleteSpItem } from './sharepoint.js';
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Additional Build Nudge
|
|
76
|
+
|
|
77
|
+
When a SharePoint build introduces or depends on specific lists and columns, create an `agent/listSchema.json` artifact so the user can recreate the list structure correctly.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sql
|
|
3
|
+
description: "Use when: building or debugging SQL Server connector flows in a Power Apps Code App, including table discovery, row CRUD, native queries, or stored procedure execution."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SQL Server Connector Guide
|
|
7
|
+
|
|
8
|
+
> Agent limitation: do not use CLI commands directly from chat for SQL connector setup. Use the built-in Sync Connections and Deploy buttons instead.
|
|
9
|
+
|
|
10
|
+
## Core Rule
|
|
11
|
+
|
|
12
|
+
The wrapper in `codeApp/dist/connectors/sql.js` is the repo-local source of truth.
|
|
13
|
+
|
|
14
|
+
- It retries the data-source names `sql`, `Sql`, and `SQL`.
|
|
15
|
+
- It includes inline metadata for the SQL actions it exposes.
|
|
16
|
+
- The Power Apps runtime special-cases `shared_sql`, so do not guess or hand-roll SQL connector paths.
|
|
17
|
+
|
|
18
|
+
## power.config.json
|
|
19
|
+
|
|
20
|
+
Prefer a connection reference whose `dataSources` array contains `sql`.
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"connectionReferences": {
|
|
25
|
+
"sqlConnection": {
|
|
26
|
+
"id": "/providers/Microsoft.PowerApps/apis/shared_sql",
|
|
27
|
+
"displayName": "SQL Server",
|
|
28
|
+
"dataSources": ["sql"],
|
|
29
|
+
"dataSets": {}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The connection-reference object key can still vary by environment, but the exposed data-source name should stay aligned with the wrapper.
|
|
36
|
+
|
|
37
|
+
## Public Helper Surface
|
|
38
|
+
|
|
39
|
+
The wrapper exports:
|
|
40
|
+
|
|
41
|
+
- `callSqlOperation(operationName, parameters)`
|
|
42
|
+
- `getSqlTables({ server, database })`
|
|
43
|
+
- `getSqlRows({ server, database, table, apply, filter, orderBy, skip, top, select })`
|
|
44
|
+
- `getSqlRow({ server, database, table, id })`
|
|
45
|
+
- `insertSqlRow({ server, database, table, item })`
|
|
46
|
+
- `updateSqlRow({ server, database, table, id, item })`
|
|
47
|
+
- `deleteSqlRow({ server, database, table, id })`
|
|
48
|
+
- `executeSqlQuery({ server, database, query })`
|
|
49
|
+
- `executeSqlStoredProcedure({ server, database, procedure, parameters })`
|
|
50
|
+
|
|
51
|
+
## Supported Connector Actions
|
|
52
|
+
|
|
53
|
+
The wrapper currently maps to these SQL connector actions:
|
|
54
|
+
|
|
55
|
+
- `GetTables_V2`
|
|
56
|
+
- `GetItems_V2`
|
|
57
|
+
- `GetItem_V2`
|
|
58
|
+
- `PostItem_V2`
|
|
59
|
+
- `PatchItem_V2`
|
|
60
|
+
- `DeleteItem_V2`
|
|
61
|
+
- `ExecutePassThroughNativeQuery_V2`
|
|
62
|
+
- `ExecuteProcedure_V2`
|
|
63
|
+
|
|
64
|
+
## Important Wrapper Behavior
|
|
65
|
+
|
|
66
|
+
- `server` and `database` default to `default` when not supplied.
|
|
67
|
+
- `getSqlRows(...)` maps the query options to OData-style connector fields such as `$apply`, `$filter`, `$orderby`, `$skip`, `$top`, and `$select`.
|
|
68
|
+
- Row CRUD helpers expect the SQL connector `table` value plus either `id` or `item`, depending on the operation.
|
|
69
|
+
- `executeSqlStoredProcedure(...)` normalizes `parameters` to `{}` when none are supplied.
|
|
70
|
+
|
|
71
|
+
## Raw Calls
|
|
72
|
+
|
|
73
|
+
Use `callSqlOperation(operationName, parameters)` only when a dedicated helper does not already exist.
|
|
74
|
+
|
|
75
|
+
Do not invent:
|
|
76
|
+
|
|
77
|
+
- SQL action names
|
|
78
|
+
- parameter field names
|
|
79
|
+
- runtime URL shapes for `shared_sql`
|
|
80
|
+
|
|
81
|
+
## Debugging
|
|
82
|
+
|
|
83
|
+
- If the failure mentions a missing connection reference, confirm the app exposes `sql` in `power.config.json`.
|
|
84
|
+
- If the request reaches the connector but returns a path or dataset error, double-check that the code is using the wrapper helpers instead of handwritten SQL action paths.
|
|
85
|
+
- If table reads work but stored procedures do not, verify the wrapper is being passed `procedure` and `parameters` rather than a raw request body shape.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frontend-design
|
|
3
|
+
description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Frontend Design Skill
|
|
7
|
+
|
|
8
|
+
This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices.
|
|
9
|
+
|
|
10
|
+
The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints.
|
|
11
|
+
|
|
12
|
+
## Design Thinking
|
|
13
|
+
|
|
14
|
+
Before coding, understand the context and commit to a BOLD aesthetic direction:
|
|
15
|
+
|
|
16
|
+
- **Purpose:** What problem does this interface solve? Who uses it?
|
|
17
|
+
- **Tone:** Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian, etc. There are so many flavors to choose from. Use these for inspiration but design one that is true to the aesthetic direction.
|
|
18
|
+
- **Constraints:** Technical requirements (framework, performance, accessibility).
|
|
19
|
+
- For CAP code apps, treat workspace configuration and loaded skills as the source of truth for technical constraints. If `power.config.json` or the agent prompt already fixes the stack, connector, or app name, do not ask the user to restate them.
|
|
20
|
+
- **Differentiation:** What makes this UNFORGETTABLE? What's the one thing someone will remember?
|
|
21
|
+
|
|
22
|
+
**CRITICAL:** Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work - the key is intentionality, not intensity.
|
|
23
|
+
|
|
24
|
+
Then implement working code in the project's required stack. Default to plain HTML/CSS/JS when the workspace instructions or agent prompt do not explicitly require a framework. Do not ask the user to choose React, Vue, or another framework unless the project requirements are genuinely ambiguous.
|
|
25
|
+
|
|
26
|
+
- Production-grade and functional
|
|
27
|
+
- Visually striking and memorable
|
|
28
|
+
- Cohesive with a clear aesthetic point-of-view
|
|
29
|
+
- Meticulously refined in every detail
|
|
30
|
+
|
|
31
|
+
## Frontend Aesthetics Guidelines
|
|
32
|
+
|
|
33
|
+
Focus on:
|
|
34
|
+
|
|
35
|
+
- **Typography:** Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt instead for distinctive choices that elevate the frontend's aesthetics; unexpected, characterful font choices. Pair a distinctive display font with a refined body font.
|
|
36
|
+
- **Color & Theme:** Commit to a cohesive aesthetic. Use CSS variables for consistency. Dominant colors with sharp accents outperform timid, evenly-distributed palettes.
|
|
37
|
+
- **Motion:** Use animations for effects and micro-interactions. Prioritize CSS-only solutions for HTML. Only use framework-specific animation libraries when the project already uses that framework. Focus on high-impact moments: one well-orchestrated page load with staggered reveals (animation-delay) creates more delight than scattered micro-interactions. Use scroll-triggering and hover states that surprise.
|
|
38
|
+
- **Spatial Composition:** Unexpected layouts. Asymmetry. Overlap. Diagonal flow. Grid-breaking elements. Generous negative space OR controlled density.
|
|
39
|
+
- **Backgrounds & Visual Details:** Create atmosphere and depth rather than defaulting to solid colors. Add contextual effects and textures that match the overall aesthetic. Apply creative forms like gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows, decorative borders, custom cursors, and grain overlays.
|
|
40
|
+
NEVER use generic AI-generated aesthetics like overused font families (Inter, Roboto, Arial, system fonts), cliched color schemes (particularly purple gradients on white backgrounds), predictable layouts and component patterns, and cookie-cutter design that lacks context-specific character.
|
|
41
|
+
|
|
42
|
+
Interpret creatively and make unexpected choices that feel genuinely designed for the context. No design should be the same. Vary between light and dark themes, different fonts, different aesthetics. NEVER converge on common choices (Space Grotesk, for example) across generations.
|
|
43
|
+
|
|
44
|
+
IMPORTANT: Match implementation complexity to the aesthetic vision. Maximalist designs need elaborate code with extensive animations and effects. Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details. Elegance comes from executing the vision well.
|
|
45
|
+
|
|
46
|
+
Remember: Claude is capable of extraordinary creative work. Don't hold back, show what can truly be created when thinking outside the box and committing fully to a distinctive vision.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: teams
|
|
3
|
+
description: "Use when: building or debugging Microsoft Teams connector flows in a Power Apps Code App, including teams, channels, chats, mentions, notifications, message posting, or the Teams HttpRequest helper."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Microsoft Teams Connector Guide
|
|
7
|
+
|
|
8
|
+
> Agent limitation: do not use CLI commands directly from chat for Teams setup. Use the built-in Sync Connections and Deploy buttons instead.
|
|
9
|
+
|
|
10
|
+
## Core Rule
|
|
11
|
+
|
|
12
|
+
The wrapper in `dev files/teams.js` is the repo-local source of truth.
|
|
13
|
+
|
|
14
|
+
- It retries `teams`, `Teams`, `microsoftteams`, and `MicrosoftTeams`.
|
|
15
|
+
- It includes inline metadata for the operations it exposes.
|
|
16
|
+
- There is no need to guess connector paths when the helper already defines them.
|
|
17
|
+
|
|
18
|
+
## power.config.json
|
|
19
|
+
|
|
20
|
+
Prefer a connection reference whose `dataSources` array includes `teams`.
|
|
21
|
+
|
|
22
|
+
The connection-reference object key can still be an environment-specific id, but the data-source name exposed to the connector should stay aligned with the wrapper.
|
|
23
|
+
|
|
24
|
+
## Public Helper Surface
|
|
25
|
+
|
|
26
|
+
The wrapper exports:
|
|
27
|
+
|
|
28
|
+
- `listTeams()`
|
|
29
|
+
- `listChannels(teamId)`
|
|
30
|
+
- `getTeam(teamId)`
|
|
31
|
+
- `getChannelDetails(teamId, channelId)`
|
|
32
|
+
- `addMemberToTeam(teamId, body)`
|
|
33
|
+
- `addMemberToChannel(teamId, channelId, body)`
|
|
34
|
+
- `getUserMentionToken(userId)`
|
|
35
|
+
- `getTeamTagMentionToken(teamId, tagId)`
|
|
36
|
+
- `listChats({ top, skip })`
|
|
37
|
+
- `listMembers(teamId, channelId)`
|
|
38
|
+
- `postFeedNotification({ groupId, body })`
|
|
39
|
+
- `postCardInChatOrChannel({ poster, location, body })`
|
|
40
|
+
- `postMessageInChatOrChannel({ poster, location, body })`
|
|
41
|
+
- `sendTeamsGraphHttpRequest({ method, uri, headers, body })`
|
|
42
|
+
- `callTeamsOperation(operationName, parameters)`
|
|
43
|
+
|
|
44
|
+
## Important Wrapper Behavior
|
|
45
|
+
|
|
46
|
+
- `postFeedNotification(...)` chooses `PostChannelNotification` when `groupId` is present and `PostUserNotification` otherwise.
|
|
47
|
+
- Chat pagination uses `$top` and `$skip`.
|
|
48
|
+
- Mention helpers return the connector-formatted mention token payload; do not hand-roll those shapes.
|
|
49
|
+
- `sendTeamsGraphHttpRequest(...)` still uses the Teams connector `HttpRequest` action, not direct Graph auth.
|
|
50
|
+
|
|
51
|
+
## Debugging
|
|
52
|
+
|
|
53
|
+
- If the failure mentions missing `path`, the operation name does not match the inline Teams metadata.
|
|
54
|
+
- If the failure mentions connection reference lookup, confirm the app exposes `teams` in `power.config.json`.
|
|
55
|
+
- Keep the wrapper candidate names intact when supporting older apps.
|