Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,24 @@ redirect stub for each one. `content/en/kanvas/operator/_index.md` and
`content/en/kanvas/operator/views/index.md` are the working examples. Verify after a build
by checking the generated `<outdir>/<dead-path>/index.html` for the `url=` refresh target.

Heading anchors are linked from outside this repo too, so renaming a heading silently breaks
those links. Goldmark heading attributes are enabled: keep the old anchor by writing
`### New Wording {#old-anchor-slug}`. To prove no anchor was lost, build master and your branch
to separate directories and diff the `id=` attributes of every `<h1>`-`<h6>` across both trees;
`content/en/cloud/academy/creating-content/building-certifications/index.md` is a worked example.

## Appending to a page bundle

Several `index.md` files end without a trailing newline, and some end inside a raw HTML
block. Appending a Markdown heading directly after a closing `</div>` leaves it unparsed and
rendered as literal `## text`. Always leave a blank line between raw HTML and following
Markdown, and check the built HTML for the heading's `id=` anchor.

A literal backslash inside inline HTML is a related trap: Goldmark reads the `\<` in
`<button>\</button>` as an escaped `<` and the tag never closes. Write the key as `&#92;`
(`content/en/kanvas/reference/keyboard-shortcuts.md` is the worked example) and confirm the
built HTML, not the source, before committing.

## Maintaining this file

Keep this file for knowledge useful to almost every future agent session in this project.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,17 +32,17 @@ A Certification is ideal when the main objective is to test, not teach. It assum

Building a new certification involves setting up the correct directory structure and defining its properties through Markdown frontmatter.

### Find Your Organization UUID and Certification ID
### Find Your Organization ID and Certification ID {#find-your-organization-uuid-and-certification-id}

{{< alert type="warning" title="Important: Replace UUIDs" >}}
Throughout this guide, you'll see references to `<your-organization-uuid>` and `<your-certification-uuid>` placeholders. Make sure to replace all of these with your actual UUIDs from the [Instructor Console](https://cloud.layer5.io/academy/instructors-console) when implementing your certification.
{{< alert type="warning" title="Important: Replace the Placeholder IDs" >}}
Throughout this guide, you'll see references to `<your-organization-uuid>` and `<your-certification-uuid>` placeholders. Make sure to replace all of these with your actual IDs from the [Instructor Console](https://cloud.layer5.io/academy/instructors-console) when you build your certification.
{{< /alert >}}

Each certification is tied to a specific organization and secured by a unique identifier (UUID). This is a system-generated ID that ensures your content is scoped only to your organization.
Each certification is tied to a specific organization and secured by a unique identifier. Layer5 Cloud generates these IDs for you, and they are what keep your content visible only under your own organization.

You'll need two types of UUIDs:
You'll need two IDs:
- **Certification ID**: A unique identifier for your specific certification that gets added to the front matter of your certification's index file
- **Organization ID**: Your organization's UUID that's used in directory paths
- **Organization ID**: Your organization's own ID, used in directory paths

{{< alert type="info" title="Generating Your IDs from the Instructor Console" >}}

Expand Down Expand Up @@ -108,7 +108,7 @@ badge:
| Field | Required | Description |
| :--- | :--- | :--- |
| `type` | ✅ | Must be set to `"certification"` to identify this content correctly. |
| `id` | ✅ | **Crucial.** A stable UUID for tracking progress. **Do not change.** |
| `id` | ✅ | **Crucial.** A stable ID used to track learner progress. **Do not change.** |
| `title` | ✅ | The human-readable title that will be displayed to users. |
| `description` | ✅ | A comprehensive summary of the certification's scope and objectives. |
| `weight` | - | Controls the display order (lower numbers appear first). Items are sorted alphabetically by title if not specified.|
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ content/challenges/<your-organization-uuid>
```

{{< alert type="info" title="Sections Are Yours to Name" >}}
`description`, `getting-started` and `faq` are a convention, not a fixed schema - the folder hierarchy you create is what the Academy renders as the challenge's navigation. Use the sections your scenario actually needs.
`description`, `getting-started` and `faq` are a convention, not a fixed structure - the folder hierarchy you create is what the Academy renders as the challenge's navigation. Use the sections your scenario actually needs.
{{< /alert >}}

### 2. Define the Challenge with Front Matter
Expand Down
12 changes: 6 additions & 6 deletions content/en/kanvas/designer/configuring-components/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
title: Configuring Components
weight: 16
description: >
Edit a component's configuration on the canvas, using the schema-driven form and its inline help.
Edit a component's configuration on the canvas, using the form Kanvas builds for it and its inline help.
categories: [Designer]
tags: [designs]
---

A component is the fundamental building block of a design - it represents one piece of the infrastructure under management, and its configuration is what will actually be applied when the design is deployed. The component configurator is where that configuration is edited.

Kanvas does not ask you to write YAML for this. The form is generated from the component's own schema, which comes from the model that defines it, so the fields you see are exactly the fields that component supports, in the version of the model you have selected.
Kanvas does not ask you to write YAML for this. The form is built from the component's own definition, as published by the model it belongs to, so the fields you see are exactly the fields that component supports, in the version of the model you have selected.

## Opening the configurator

Expand All @@ -25,8 +25,8 @@ The configurator opens in a panel beside the canvas. The component stays selecte
| Control | What it does |
| --- | --- |
| Component icon | Hovering shows the model version the component is using. |
| Version menu | Appears when the model has more than one version available. Switching versions re-generates the form against that version's schema. |
| Search | Filters the form down to matching fields. On a large schema this is far quicker than scrolling; if nothing matches, the form says so rather than appearing empty. |
| Version menu | Appears when the model has more than one version available. Switching versions rebuilds the form against that version's definition. |
| Search | Filters the form down to matching fields. On a component with many fields this is far quicker than scrolling; if nothing matches, the form says so rather than appearing empty. |
| Help | Shows the component's own description, as published by its model. |
| Expand / collapse | Maximizes the configurator to fill the workspace, and restores it. |
| Delete | Removes the component from the design. |
Expand All @@ -42,9 +42,9 @@ The configurator is organized into tabs. Which are present depends on the compon

## Field help and validation

Each field carries its documentation with it. A **?** icon at the right of a field opens a tooltip containing that field's description, taken straight from the component's schema - so the guidance you get is the upstream project's own, not a Kanvas paraphrase. Nested objects and arrays carry the same help on their group headings.
Each field carries its documentation with it. A **?** icon at the right of a field opens a tooltip containing that field's description, taken straight from the component's definition - so the guidance you get is the upstream project's own, not a Kanvas paraphrase. Nested objects and arrays carry the same help on their group headings.

When a value does not satisfy the schema, a red error icon appears alongside, and its tooltip gives the validation message. The component itself also picks up a validation warning badge on the canvas, so a problem you scroll past in the form is still visible when you close the panel. See [Interpreting Component Badges]({{< ref "kanvas/designer/interpreting-component-badges/index.md" >}}).
When a value is not valid for that field, a red error icon appears alongside, and its tooltip gives the validation message. The component itself also picks up a validation warning badge on the canvas, so a problem you scroll past in the form is still visible when you close the panel. See [Interpreting Component Badges]({{< ref "kanvas/designer/interpreting-component-badges/index.md" >}}).

## Changes take effect as you type

Expand Down
2 changes: 1 addition & 1 deletion content/en/kanvas/designer/export-designs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ Yes. Any published design can be exported, not just your own.
<details>
<summary>Can I export an earlier version of a design?</summary>

No. Every export - in any format - is generated from the **current** state of the design. A design carries a single version number, which increments as the design is updated, and the export and download endpoints take no version argument.
No. Every export - in any format - is generated from the **current** state of the design. A design carries a single version number, which increments as the design is updated, and neither exporting nor downloading offers a way to ask for an earlier one.

The **View Save History** button in Kanvas (on the save-status indicator) shows the design's save history as a list of events. It is an audit trail of who changed the design and when; it is not a set of restorable snapshots, and you cannot export from it.

Expand Down
Loading
Loading