Client onboarding
Skill SeayMonster/SkillsOfTheKraken/skills/client-onboarding
One-time setup for a new BlueYonder (JDA Intactix) client repo. Generates client.json, README.md, Setup.ps1, a portal HTML file, ONBOARDING.md, and wires up copilot-instructions.md and CLAUDE.md. Use this skill whenever you are in a BlueYonder client repo and client.json does not exist in the repo root, or when the user asks to set up, onboard, or initialize a client repo for the first time.From its SKILL.md
npx -y skills add SeayMonster/SkillsOfTheKraken --skill client-onboardingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
13.0 KB, as published. Nobody here has run it
Run once per repo lifetime. After that, the portal and Copilot handle everything.
New Client Checklist
Before running this skill, gather the following from the client. You will
need these to populate env-config.json and configure the SQL MCP connection.
Gather from the client (per environment: Dev / Test / Prod):
| What | Used for |
|---|---|
DB server name (e.g. sql-server\instance) | SQL MCP connection, env table |
| Database name | SQL MCP connection, env table |
| DB user + password | SQL auth (if not Windows Integrated) |
| Citrix server name | RDP / env table |
| Batch server name | Batch deploy target, env table |
| Reporting server name | Env table |
| VS Citrix server name | Dev machine access, env table |
| OA realm name | Open Access login |
| Citrix URL | Env table |
| Open Access URL | Env table |
| Deploy type: Local or SaaS | Portal deploy selector default |
Then in the new repo:
- Create a new repo in Visual Studio (or clone an existing client repo).
- Run
/kraken:client-onboarding— this skill generates everything below. - Populate
Environment Details/env-config.jsonwith the server info above, or run.\Setup.ps1which guides you through it. - Run
/kraken:switch-database(or.\Switch-SqlEnv.ps1 Dev) to point the SQL MCP at the client DB. - Restart Claude Code — MCP config only loads at startup.
- Verify with
/mcp—mssql-servershould be listed and connected.
That's it. The portal ([Client].html) and deploy flow are auto-generated by this skill and work the same way across all clients.
</context>
Run Steps 1–3 below before invoking the workflow. Collect project tags and Excel path.
Steps 4–14: Multi-agent workflow
After Coordinate completes, invoke:
Workflow({
scriptPath: "{SKILL_DIR}/workflow.js",
args: { repoRoot: "<absolute path to client repo>" }
})
Generate phase (parallel): client.json, README.md, Setup.ps1, portal HTML, ONBOARDING.md — one agent each.
Wire phase (parallel): copilot-instructions append, CLAUDE.md append, .gitignore, CopyWebUI.bat patches, _Portal sln folder.
Finalize: commit reminder, switch-database, MCP verify.
Detailed content for each artifact remains in Steps 4–14 below.
Step 1 — Scan .csproj files
Find all .csproj files in the repo:
Get-ChildItem -Recurse -Filter *.csproj | Select-Object FullName
Present the list to the user and ask them to tag each project:
- web — deploys to the OA web server via
CopyWebUI.bat - batch — deploys to the batch/archive server
- skip — tooling, tests, samples, shared libraries
Common patterns:
- Projects with a
CopyWebUI.bat→ likelyweb - Projects named
CX_Archive*,CxCkb*ImportExport→ likelybatch - Projects named
*Tests*,*Sample*,LegacyAutomation*,*Shared*→ likelyskip - SA Pro script projects (
*BRVScript,*SAProScript) →skip(deployed differently)
Step 2 — Detect environment Excel
Look for a .xlsx file in these locations (in order):
Environment Details/folderConfig/folder- Repo root
If found, confirm the path with the user. If not found, ask for the location.
Step 3 — Check what already exists
Before generating, check:
Switch-SqlEnv.ps1exists? If not, invokekraken:env-switcherskill..github/copilot-instructions.mdexists? If not, invokekraken:setup-copilotskill.client.jsonexists? If yes, confirm overwrite before proceeding.
Step 4 — Write client.json
Write to repo root. Use the project tags from Step 1 and the Excel path from Step 2.
{
"projects": [
{ "name": "ProjectName", "path": "relative/path/ProjectName", "target": "web" }
],
"environmentExcel": "Environment Details/filename.xlsx"
}
The path field is the folder containing the .csproj, relative to repo root.
Step 5 — Generate README.md
Write to repo root. Contents:
- One-paragraph description of what the repo is
- Quick start: clone →
.\Setup.ps1→ open portal → paste into AI - Project table (populated from
client.json— web and batch projects only, skip the skip ones) - Environments section pointing to
Switch-SqlEnv.ps1 - Key files table: CLAUDE.md, copilot-instructions.md, client.json, portal HTML, Switch-SqlEnv.ps1, LegacyAutomationConversion/Skills/
Step 6 — Generate Setup.ps1
Write to repo root. The script must be idempotent (safe to re-run). Steps:
- If
claudeCLI detected → register SkillsOfTheKraken and run plugin install. Skip silently if not present (SaaS — only VS 2022 + Copilot available). - If
env-config.jsondoesn't exist → runSwitch-SqlEnv.ps1 - Check
.gitignorefor required entries (env-config.json,build-request.json) — add any missing - Prereq check: ODBC Driver 17 (check registry), msbuild on PATH — warn if missing, don't block
- Print summary with next steps
Step 7 — Generate [ClientName].html portal
The portal filename is derived from the repo folder name: take the first segment before any - or _ separator, then title-case it (e.g. academy-BlueYonder → Academy.html, acosta-dev → Acosta.html, clientname → Clientname.html). Write to repo root.
The portal is a single self-contained HTML file (no external dependencies) using the File System Access API. One-time folder permission per browser session. Chrome and Edge only. Use the dark design system defined in global CLAUDE.md (Syne/Outfit/JetBrains Mono, #0b0f14 base, #0591E5 accent). Persist the directory handle in IndexedDB so the folder auto-reconnects on reload.
Tabs: Environments, Projects, History (add UAT if the repo has a playwright.config.js).
Environments tab
Reads Environment Details/env-config.json. Shows server/database/user per environment in a table with copy buttons. Passwords show as •••••••• with a Show/Hide toggle. If file not found, shows instructions to run Switch-SqlEnv.ps1.
Projects tab
Deploy controls row (top of the card):
- Environment
<select>— options are['local', ...Object.keys(envConfig)].localis always first and hardcoded — do not read it fromenv-config.json. - Deploy type badge — auto-resolves from env:
local→ greenLOCALbadge; any other env → blueSAASbadge. No separate deploy type dropdown. - Rescan button (re-scans for new
.csprojfiles, updatesclient.json) - Package summary span ("2 components selected")
- Generate Package button — disabled when env is
local, enabled when SAAS
Target display (below controls):
- Web target path (local:
C:\Program Files (x86)\JDA\Intactix\Intactix Knowledge Base\Open Access; SaaS:U:\OpenAccess\Customization) - Batch target path (read
BatchServerfromenv-config.jsonfor the selected env, format\\{BatchServer}\F$\batch\exe)
Watcher panel (shown only when env is local, hidden for SaaS):
- Status dot + label (polls
_deploy-status.jsonevery 3 seconds; green = watcher alive <10s, yellow = 10-30s, gray = not detected) - Inline command:
powershell -ExecutionPolicy Bypass -File deploy-watcher.ps1with a Copy button
Project cards — one per project in client.json:
- Skip/devOnly projects: muted card, "Dev / Skip" badge, no action
- Library projects: muted label, no action
- Deployable (web/batch): Include checkbox + Deploy button
- Deploy button: calls watcher IPC (
_deploy-request.json), disabled when SAAS env selected - Include checkbox: toggles project into
selectedProjectsSet for packaging
- Deploy button: calls watcher IPC (
Generate Package writes _package-request.json:
{
"projects": ["OA_LifecycleManagement", "Automator"],
"environment": "prod",
"deployType": "SaaS",
"webTarget": "U:\\OpenAccess\\Customization",
"batchTarget": "\\\\batchserver\\F$\\batch\\exe",
"requestedAt": "2026-06-23T14:30:00Z"
}
After writing, show message on button: ✓ Request written — run /create-deployment-package in Claude Code for 6 seconds.
Watcher IPC (local deploys): portal writes _deploy-request.json; watcher writes _deploy-status.json with { requestId, status, message, watcherAlive }.
History tab
Reads deploy-history.json. Shows entries grouped by date with project name, env badge, deploy type badge, and relative time. "Clear History" button. Entry format: { project, timestamp, env, deployType }.
Path constants:
- Local web:
C:\Program Files (x86)\JDA\Intactix\Intactix Knowledge Base\Open Access - SaaS web:
U:\OpenAccess\Customization - Batch: derived from
envConfig[envKey].BatchServeras\\{server}\F$\batch\exe
Step 8 — Generate ONBOARDING.md
Write to repo root. Contents:
- What the repo is (one paragraph)
- MCP setup (mssql-server via Switch-SqlEnv.ps1, restart Claude Code after)
- Skills table (kraken:openaccess-controls, kraken:csharp-styling, kraken:jda-space-automation, kraken:datamanager-converter)
- Build and deploy (use portal or manual msbuild + CopyWebUI.bat)
- Key files table
- Database section (ckbcustom schema, CKB database, stored proc naming)
- Integration tests section
Step 9 — Update .github/copilot-instructions.md
Append two sections at the end:
---
## Deploy Package Requests
- If `_package-request.json` exists in the repo root, invoke `/create-deployment-package` to build the package
- The skill reads `_package-request.json`, MSBuilds each project, gathers compiled output + SQL files, generates `Deploy.ps1` + `README.md`, and writes the package to `deploy-packages/`
- Delete `_package-request.json` after the package is built
---
## client.json Maintenance
- If `.csproj` files exist in the repo that are not listed in `client.json`, ask the developer to tag each new project (`web` / `batch` / `skip`) and update `client.json` before proceeding with any build/deploy task
Step 10 — Update CLAUDE.md
Append to the project's CLAUDE.md:
---
## Auto-trigger: client onboarding
If `client.json` does not exist in the repo root, invoke `kraken:client-onboarding`
before doing anything else in this repo.
Step 11 — Update .gitignore
Add if not already present:
# Portal IPC files — never commit
_deploy-request.json
_deploy-status.json
_package-request.json
deploy-history.json
# Generated deploy packages — never commit
deploy-packages/
Step 12 — Update CopyWebUI.bat files
For each web-target project that has a CopyWebUI.bat, replace the hardcoded WEB_APPLICATION_DIR line with:
if "%DEPLOY_TARGET%"=="" (
SET DEPLOY_TARGET=C:\Program Files (x86)\JDA\Intactix\Intactix Knowledge Base\Open Access
)
SET WEB_APPLICATION_DIR=%DEPLOY_TARGET%
Step 13 — Add _Portal solution folder to .sln
Find the .sln file in the repo root. Add a solution folder named _Portal containing
all the generated root files so they are visible in Visual Studio Solution Explorer.
Generate a new GUID (PowerShell: [System.Guid]::NewGuid().ToString().ToUpper()).
Insert this block before the first Project( line in the .sln file:
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Portal", "_Portal", "{<NEW-GUID>}"
ProjectSection(SolutionItems) = preProject
[ClientName].html = [ClientName].html
client.json = client.json
CLAUDE.md = CLAUDE.md
ONBOARDING.md = ONBOARDING.md
README.md = README.md
Setup.ps1 = Setup.ps1
EndProjectSection
EndProject
Replace [ClientName].html with the actual portal filename. The underscore prefix on _Portal
sorts it to the top of Solution Explorer alphabetically.
If no .sln file exists in the repo root, skip this step.
Step 14 — Commit everything
git add client.json README.md Setup.ps1 [ClientName].html ONBOARDING.md
git add .github/copilot-instructions.md CLAUDE.md .gitignore
git add $(git ls-files --modified "**/CopyWebUI.bat")
git add *.sln
git commit -m "chore: add client onboarding artifacts"
</task>
<constraints>
- This skill runs **local only** (Claude Code). Never needs to re-run after initial setup.
- New projects are always added locally first (VS creates them), then pushed. Copilot detects new `.csproj` files not in `client.json` and asks to tag them.
- `env-config.json` and `build-request.json` are gitignored — never commit them.
- `client.json` IS committed — it describes repo structure, not credentials.
- File System Access API: Chrome and Edge only, Safari not supported. Browser prompts once per session for the repo root folder.
</constraints>