codeapp-js 1.0.0 → 1.0.2
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/skills/frontend-design/SKILL.md +32 -20
- package/AI/skills/start/SKILL.md +37 -30
- package/codeApp/dist/connectors/azureKeyvault.js +2 -2
- package/codeApp/dist/connectors/jira.js +1 -1
- package/codeApp/dist/connectors/office365groups.js +2 -2
- package/codeApp/dist/connectors/office365users.js +2 -2
- package/codeApp/dist/connectors/outlook.js +2 -2
- package/codeApp/dist/connectors/sharepoint.js +2 -2
- package/codeApp/dist/connectors/sql.js +2 -2
- package/codeApp/dist/connectors/teams.js +2 -2
- package/package.json +1 -1
- package/codeApp/src/generated/index.ts +0 -12
|
@@ -1,34 +1,46 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: frontend-design
|
|
3
|
-
description:
|
|
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
4
|
---
|
|
5
5
|
|
|
6
|
-
# Frontend Design
|
|
6
|
+
# Frontend Design Skill
|
|
7
7
|
|
|
8
|
-
|
|
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.
|
|
9
11
|
|
|
10
12
|
## Design Thinking
|
|
11
13
|
|
|
12
|
-
Before coding:
|
|
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: modern minimal, maximalist chaos, Microsoft's Fluent design language, 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
|
|
13
30
|
|
|
14
|
-
|
|
15
|
-
- Commit to a clear aesthetic direction instead of blending safe defaults.
|
|
16
|
-
- Treat the existing workspace configuration and loaded skills as the source of truth for stack and app constraints.
|
|
17
|
-
- Default to plain HTML, CSS, and JS when the repo does not require a framework.
|
|
31
|
+
## Frontend Aesthetics Guidelines
|
|
18
32
|
|
|
19
|
-
|
|
33
|
+
Focus on:
|
|
20
34
|
|
|
21
|
-
- Choose fonts
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
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.
|
|
26
41
|
|
|
27
|
-
|
|
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.
|
|
28
43
|
|
|
29
|
-
|
|
30
|
-
- Purple-on-white gradient defaults.
|
|
31
|
-
- Cookie-cutter cards and dashboards with no point of view.
|
|
32
|
-
- Asking the user to pick a framework when the repo already implies one.
|
|
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.
|
|
33
45
|
|
|
34
|
-
|
|
46
|
+
Remember: LLMs are 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.
|
package/AI/skills/start/SKILL.md
CHANGED
|
@@ -1,46 +1,53 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
|
|
2
|
+
name: start
|
|
3
|
+
aliases: start-codeapp
|
|
4
|
+
description: Start skill for new project setup. Use this skill when starting a fresh app build or UI build so the agent confirms theme direction, offers mockups, and only then implements files.
|
|
4
5
|
---
|
|
5
6
|
|
|
6
|
-
#
|
|
7
|
+
# Start: New Project Setup
|
|
7
8
|
|
|
8
|
-
This skill
|
|
9
|
+
This skill applies only when the project is new (the decision log has no prior decisions). It ensures the agent gathers style and colour preferences and offers mockup creation before building.
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
## folder setup
|
|
12
|
+
The current folder should have a power-config.json file and a dist folder. If it does not the run the cap newApp command with a given name or one created by you.
|
|
11
13
|
|
|
12
|
-
##
|
|
14
|
+
## Style and Colour Direction
|
|
13
15
|
|
|
14
|
-
Before
|
|
16
|
+
Before building any creative UI (website, app, dashboard, landing page, etc.):
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
1. Check if the user's message already includes colour, theme, or style direction.
|
|
19
|
+
2. If style direction is **not** provided, ask: _"What colours or overall theme do you want for this site or app? If you do not want to choose, tell me to proceed and I will decide the visual direction myself."_.
|
|
20
|
+
When interactive user input is available, ask through the interactive question flow and continue in the same session after the user answers.
|
|
21
|
+
Only stop and wait for a later run when interactive user input is not available.
|
|
22
|
+
3. If the user says to decide yourself, choose a bold and distinctive visual direction. Do **not** ask again.
|
|
23
|
+
4. Record the chosen style and colour direction in `agent/decision-log.md` under **Custom Requirements**.
|
|
21
24
|
|
|
22
|
-
**
|
|
25
|
+
**Important:** The agent must have colour and style direction before building. Never start building a creative UI without it — either the user provides it or you decide it.
|
|
23
26
|
|
|
24
|
-
|
|
27
|
+
## Mockup Offer
|
|
25
28
|
|
|
26
|
-
|
|
27
|
-
- Visually striking and memorable
|
|
28
|
-
- Cohesive with a clear aesthetic point-of-view
|
|
29
|
-
- Meticulously refined in every detail
|
|
29
|
+
After style direction is established (or if the user's prompt already includes it):
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
0. If a TODO checklist exists in `agent/decision-log.md`, ensure it includes these setup steps explicitly before any build tasks: theme/colour confirmation, mockup offer, optional mockup creation, then implementation.
|
|
32
|
+
1. Check if mockup files already exist in the `agent/` folder. If they do, skip this step.
|
|
33
|
+
2. If no mockups exist, ask: _"Do you want me to create 5 creative and unique mockups in agent/ for you to pick from? Reply yes or no."_.
|
|
34
|
+
When interactive user input is available, ask through the interactive question flow and continue in the same session after the user answers.
|
|
35
|
+
Only stop and wait for a later run when interactive user input is not available.
|
|
36
|
+
3. If the user says yes, create 5 **CREATIVE** and **DISTINCT** HTML mockup options in `agent/`, using the frontend-design skill, then stop so the user can pick one. Name them clearly, for example `agent/mockup-1.html` through `agent/mockup-5.html`.
|
|
37
|
+
Each mockup must be a self-contained, one-page HTML file that opens directly in a browser, shows the visual design, and includes lightweight interaction such as search filtering, panel toggles, or compose drawer open/close behavior. It is a visual prototype only, not a fully functional app.
|
|
38
|
+
Create the files sequentially as you work: fully write `agent/mockup-1.html` before starting `agent/mockup-2.html`, and continue one mockup at a time instead of batching all file writes at the end.
|
|
39
|
+
4. If the user says no or wants to skip, proceed directly to building in the same session.
|
|
40
|
+
5. Never say a mockup is ready unless the corresponding files have actually been created in `agent/`.
|
|
32
41
|
|
|
33
|
-
|
|
42
|
+
## Interactive Sessions
|
|
34
43
|
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
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.
|
|
44
|
+
- If the runtime says interactive user input is available, do not end the turn after a required clarification if the answer you need can be gathered through the interactive question flow.
|
|
45
|
+
- After the user answers the required setup questions, continue with planning and implementation immediately.
|
|
46
|
+
- Do not ask optional open-ended follow-up questions such as "let me know if you have more preferences" before producing the first concrete implementation unless the task is still blocked.
|
|
47
|
+
- If the user asks how to view a mockup, point them to the actual generated files in `agent/`. Do not ask them to choose a framework when the project structure already dictates the implementation stack.
|
|
41
48
|
|
|
42
|
-
|
|
49
|
+
## When to Skip
|
|
43
50
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
51
|
+
- If the user's prompt already contains style guidance **and** they explicitly decline mockups, proceed directly to building.
|
|
52
|
+
- If the user's request is not a creative build (e.g. bug fix, add feature, deploy, refactor), skip this skill entirely.
|
|
53
|
+
- If mockups already exist in the `agent/` folder, skip the mockup offer.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// ────────────────────────────────────────────────────────────────────────────
|
|
2
2
|
// ───────────────────────────── Azure Key Vault ──────────────────────────────
|
|
3
3
|
// ────────────────────────────────────────────────────────────────────────────
|
|
4
|
-
import { getClient } from "
|
|
5
|
-
import {_dbgWrap } from "
|
|
4
|
+
import { getClient } from "../power-apps-data.js";
|
|
5
|
+
import {_dbgWrap } from "../codeapp.js";
|
|
6
6
|
const KEY_VAULT_DATA_SOURCE_CANDIDATES = ["keyvault", "KeyVault", "azurekeyvault", "azureKeyVault", "AzureKeyVault"];
|
|
7
7
|
const KEY_VAULT_APIS = {
|
|
8
8
|
ListKeys: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ────────────────────────────────────────────────────────────────────────────
|
|
2
2
|
// ─────────────────────────────────── Jira ───────────────────────────────────
|
|
3
3
|
// ────────────────────────────────────────────────────────────────────────────
|
|
4
|
-
|
|
4
|
+
import {_dbgWrap } from "../codeapp.js";
|
|
5
5
|
const JIRA_DATA_SOURCE_CANDIDATES = ["jira", "Jira", "JIRA"];
|
|
6
6
|
const JIRA_APIS = {
|
|
7
7
|
AddComment_V2: {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// ────────────────────────────────────────────────────────────────────────────
|
|
2
2
|
// ────────────────────────────── O365 Groups──────────────────────────────────
|
|
3
3
|
// ────────────────────────────────────────────────────────────────────────────
|
|
4
|
-
import { getClient } from "
|
|
5
|
-
import {_dbgWrap,unwrapResult } from "
|
|
4
|
+
import { getClient } from "../power-apps-data.js";
|
|
5
|
+
import {_dbgWrap,unwrapResult } from "../codeapp.js";
|
|
6
6
|
// ── Data source names (must match connectionReferences in power.config.json) ──
|
|
7
7
|
const DATA_SOURCE_GROUPS_CANDIDATES = ["office365groups", "Office365Groups"];
|
|
8
8
|
const GROUPS_APIS = {
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
// ────────────────────────────────────────────────────────────────────────────
|
|
4
4
|
|
|
5
5
|
// ── Data source name (must match connectionReferences in power.config.json) ──
|
|
6
|
-
import {unwrapResult,_dbgWrap } from "
|
|
7
|
-
import {getClient } from "
|
|
6
|
+
import {unwrapResult,_dbgWrap } from "../codeapp.js";
|
|
7
|
+
import {getClient } from "../power-apps-data.js";
|
|
8
8
|
const DATA_SOURCE_USERS = "office365users";
|
|
9
9
|
|
|
10
10
|
const USERS_APIS = {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// ────────────────────────────────────────────────────────────────────────────
|
|
2
2
|
// ────────────────────────────── Outlook365 ──────────────────────────────────
|
|
3
3
|
// ────────────────────────────────────────────────────────────────────────────
|
|
4
|
-
import {_dbgWrap } from "
|
|
5
|
-
import { getClient} from "
|
|
4
|
+
import {_dbgWrap } from "../codeapp.js";
|
|
5
|
+
import { getClient} from "../power-apps-data.js";
|
|
6
6
|
// ── Data source name (must match connectionReferences in power.config.json) ──
|
|
7
7
|
const DATA_SOURCE_CANDIDATES = ["office365outlook", "Office365Outlook", "office365"];
|
|
8
8
|
const OUTLOOK_APIS = {
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// ────────────────────────────────────────────────────────────────────────────
|
|
3
3
|
// ─────────────────────────────── SharePoint ─────────────────────────────────
|
|
4
4
|
// ────────────────────────────────────────────────────────────────────────────
|
|
5
|
-
import { getClient} from "
|
|
6
|
-
import {_dbgWrap } from "
|
|
5
|
+
import { getClient} from "../power-apps-data.js";
|
|
6
|
+
import {_dbgWrap } from "../codeapp.js";
|
|
7
7
|
// ── Data source name (must match connectionReferences in power.config.json) ──
|
|
8
8
|
const DATA_SOURCE_SP = "sharepointonline";
|
|
9
9
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// ────────────────────────────────────────────────────────────────────────────
|
|
2
2
|
// ─────────────────────────────────── SQL ────────────────────────────────────
|
|
3
3
|
// ────────────────────────────────────────────────────────────────────────────
|
|
4
|
-
import { getClient } from "
|
|
5
|
-
import {_dbgWrap } from "
|
|
4
|
+
import { getClient } from "../power-apps-data.js";
|
|
5
|
+
import {_dbgWrap } from "../codeapp.js";
|
|
6
6
|
const SQL_DATA_SOURCE_CANDIDATES = ["sql", "Sql", "SQL"];
|
|
7
7
|
const SQL_APIS = {
|
|
8
8
|
GetTables_V2: {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// ────────────────────────────────────────────────────────────────────────────
|
|
2
2
|
// ────────────────────────────────── Teams ───────────────────────────────────
|
|
3
3
|
// ────────────────────────────────────────────────────────────────────────────
|
|
4
|
-
import { getClient } from "
|
|
5
|
-
import {_dbgWrap } from "
|
|
4
|
+
import { getClient } from "../power-apps-data.js";
|
|
5
|
+
import {_dbgWrap } from "../codeapp.js";
|
|
6
6
|
const TEAMS_DATA_SOURCE_CANDIDATES = ["teams", "Teams", "microsoftteams", "MicrosoftTeams"];
|
|
7
7
|
const TEAMS_APIS = {
|
|
8
8
|
GetAllTeams: {
|
package/package.json
CHANGED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* This file is autogenerated. Do not edit this file directly.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
// Models
|
|
7
|
-
export * as AzureKeyVaultModel from './models/AzureKeyVaultModel';
|
|
8
|
-
export * as JiraModel from './models/JiraModel';
|
|
9
|
-
|
|
10
|
-
// Services
|
|
11
|
-
export * from './services/AzureKeyVaultService';
|
|
12
|
-
export * from './services/JiraService';
|