workspace-creator
Skill14 starsChanged 58 days agoMITView on GitHub
Create new SAP workspace configurations for STAF testing — generates sap-parameters.yaml and hosts.yaml under WORKSPACES/SYSTEM/ from templates. Use when asked to create a workspace or onboard a new SAP system in an existing STAF installation; not for installing STAF itself (see setup-guide) and not for checking a workspace that already exists (see workspace-validator). Triggered by "create workspace", "new workspace", "onboard system", "onboard SAP system", "add new system", "generate hosts.yaml", "generate sap-parameters", or "setup SAP system for testing".
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 5 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 48
All workspaces live under:
- Distinctive: line 58
Before creating a workspace, gather:
- Distinctive: line 167
Create the directory structure:
- Distinctive: line 176
Place SSH key file in workspace (if not using Key Vault)
- Distinctive: line 209
Before reporting workspace creation complete:
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Workspace Creator
Creates new SAP workspace configurations for STAF testing. Generates sap-parameters.yaml
and hosts.yaml from templates based on user-provided system details.
Locate Framework
This skill requires a trusted STAF checkout — a working tree the
operator has verified out-of-band as either the official upstream
(https://github.com/Azure/sap-automation-qa.git) or a fork of it, at a
specific revision, with the framework marker ./scripts/sap_automation_qa.sh
present. The operator must have verified both the source (upstream URL or
fork URL) and the revision through a trusted out-of-band channel before
running this skill, and must have cd-ed into that directory. If that
state is not confirmed, stop and use the setup-guide skill first; it owns
the setup workflow. Do not resume this skill until setup-guide (or the
operator directly) confirms the checkout is trusted.
⚠️ This skill is guidance only. Do NOT modify any source code, scripts, or framework files. Only help the user by creating workspace configuration files (sap-parameters.yaml, hosts.yaml) under WORKSPACES/SYSTEM/.
When to Use
| Trigger | Action |
create workspace / new workspace | Full workspace creation |
onboard system / setup SAP system | Guide through system onboarding |
generate hosts.yaml | Create inventory file |
generate sap-parameters | Create SAP parameters file |
add new system | Create workspace directory structure |
Workspace Location
All workspaces live under:
WORKSPACES/SYSTEM/{SYSTEM_CONFIG_NAME}/The SYSTEM_CONFIG_NAME follows the convention: {ENV}-{REGION}-{SYSTEM}-{SID}
Example: DEV-WEEU-SAP01-X00
Required Information
Before creating a workspace, gather:
| Information | Example | Required |
| System config name | DEV-WEEU-SAP01-X00 | Yes |
| SAP SID | X00 | Yes |
| Database SID | HDB | Yes |
| Platform | HANA or DB2 | Yes |
| DB hosts (2 for HA) | hostname, IP, VM name | Yes |
| SCS host | hostname, IP, VM name | For SCS tests |
| ERS host | hostname, IP, VM name | For SCS tests |
| Authentication type | SSHKEY or VMPASSWORD | Yes |
| SSH key or Key Vault | Key file path or secret URL | Yes |
| HA configuration | database/scs HA, cluster type | Yes |
Templates
sap-parameters.yaml Template
See templates/sap-parameters.yaml.template
All fields:
# ─── Application tier ─────────────────────────────────────────
sap_sid: X00
scs_high_availability: true # boolean
scs_cluster_type: AFA # Fencing mechanism: AFA (Azure Fencing Agent), ISCSI, or ASD (Azure Shared Disks)
scs_instance_number: "00" # 2-digit string
ers_instance_number: "01" # 2-digit string
# ─── Database tier ────────────────────────────────────────────
db_sid: HDB
db_instance_number: "00" # 2-digit string
platform: HANA # HANA, DB2
database_high_availability: true # boolean
database_cluster_type: AFA # Fencing mechanism: AFA (Azure Fencing Agent), ISCSI, or ASD (Azure Shared Disks)
database_scale_out: false # boolean
# ─── Storage ──────────────────────────────────────────────────
NFS_provider: AFS # AFS, ANF
# ─── Key Vault (optional — for SSH credential retrieval) ──────
key_vault_id: /subscriptions/.../Microsoft.KeyVault/vaults/<name>
secret_id: https://<name>.vault.azure.net/secrets/<secret>/<id>
# ─── Managed Identity (optional) ──────────────────────────────
user_assigned_identity_client_id: "00000000-0000-0000-0000-000000000000"
# ─── ANF (optional — when NFS_provider=ANF) ───────────────────
ANF_account_rg: "ANF-RESOURCE-GROUP"
ANF_account_name: "ANF-ACCOUNT-NAME"
# ─── Azure Backup (optional — for AzureBackupDatabase tests) ──
backup_vault_resource_id: "/subscriptions/.../Microsoft.RecoveryServices/vaults/<name>"
backup_container_name: "VMAppContainer;Compute;<rg>;<vm>"
backup_item_name: "saphanadatabase;<sid>;<db>"
backup_target_filesystem_path: "/hana/backup/restore"
backup_target_container_name: "VMAppContainer;Compute;<rg>;<target-vm>"
backup_target_database_name: "SYSTEMDB"
backup_restore_point_time: "" # ISO 8601 UTC, empty for latesthosts.yaml Template
See templates/hosts.yaml.template
Structure (5 groups):
{SID}_DB: # 2 hosts for HA
hosts:
{hostname}:
ansible_host : {IP}
ansible_user : azureadm
ansible_connection : ssh
connection_type : key
virtual_host : {virtual_hostname}
become_user : root
os_type : linux
vm_name : {AZURE_VM_NAME}
vars:
node_tier : hana
supported_tiers : [hana]
{SID}_SCS: # 1 host
hosts: ...
vars:
node_tier : scs
supported_tiers : [scs]
{SID}_ERS: # 1 host
vars:
node_tier : ers
supported_tiers : [ers]
{SID}_PAS: # 1 host
vars:
node_tier : pas
supported_tiers : [pas]
{SID}_APP: # 1+ hosts
vars:
node_tier : app
supported_tiers : [app]Creation Steps
- Create the directory structure:
mkdir -p WORKSPACES/SYSTEM/{SYSTEM_CONFIG_NAME}/{logs,quality_assurance} - Generate
sap-parameters.yamlfrom template with user values - Generate
hosts.yamlfrom template with user values - Place SSH key file in workspace (if not using Key Vault)
- Validate with
workspace-validator
Output Format
After workspace creation:
✅ Workspace created: WORKSPACES/SYSTEM/DEV-WEEU-SAP01-X00/
Files created:
✅ sap-parameters.yaml (platform: HANA, HA: true)
✅ hosts.yaml (groups: X00_DB[2], X00_SCS[1], X00_ERS[1], X00_PAS[1], X00_APP[1])
✅ SSH key: ssh_key.pem
✅ logs/ directory created
✅ quality_assurance/ directory created
Next steps:
1. Validate: python3 skills/workspace-validator/scripts/validate_workspace.py WORKSPACES/SYSTEM/DEV-WEEU-SAP01-X00
2. Run tests: ./scripts/sap_automation_qa.sh --test-groups=HA_DB_HANA --test-cases=[ha-config]Error Handling
| Error | Cause | Fix |
| Directory already exists | Re-creation attempt | Use existing or remove first |
| Invalid SID | Not 3 uppercase alphanumeric | Fix to 3 chars (e.g., X00) |
| Missing DB host info | Incomplete user input | Need hostname, IP, VM name for both DB nodes |
| No SSH key provided | Auth not configured | Provide key file or Key Vault details |
Pre-Completion Checklist
Before reporting workspace creation complete:
- Directory exists under
WORKSPACES/SYSTEM/ sap-parameters.yamlhas all required fieldshosts.yamlhas correct groups for intended test type- All hosts have ALL fields (ansible_host, ansible_user, ansible_connection, connection_type, virtual_host, become_user, os_type, vm_name)
- SSH authentication is configured (key file, Key Vault, or password)
logs/andquality_assurance/directories exist- Validated with workspace-validator
Related Skills
| After creation... | Use skill |
| Validate the workspace | workspace-validator |
| Run tests | test-runner |
| Environment not set up yet | setup-guide |
In this repository7 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- code-reviewSkill
- setup-guideSkill
- test-result-analyzerSkill
- test-runnerSkill
- workspace-validatorSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

