# Charted Scaffold

> Writes work-in-progress code and tests based on design doc

- Skill: `marmicode/charted-scaffold` (Agent Skill)
- Install (CLI): `npx skillmds@latest add marmicode/charted-scaffold`
- Raw SKILL.md: https://api.skillmd.com/api/skills/marmicode/charted-scaffold/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: marmicode (https://skillmd.com/u/marmicode)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/marmicode/charted-scaffold

---


# Context

- designDocPath: $ARGUMENTS[0]
- prNumber: $ARGUMENTS[1]

# Task

Based on the following design doc ${designDocPath}, write WIP code for implementation described in the design doc.

- Focus only on the PR #${prNumber} if provided.
- If you add a new class, function, or method, make it throw a "🚧 work in progress" error and add the "@deprecated 🚧 work in progress" tag to its jsdoc.
- If you add a new component, add the "@deprecated 🚧 work in progress" tag to its jsdoc but do not implement the template or methods.
- **DO NOT ADD ANY NEW BEHAVIOR**.
  - As an example, do not add child components in a component.
- **DO NOT CHANGE ANY EXISTING BEHAVIOR**:
  - If you change a function or a method signature in a retro-compatible way, do not throw a "🚧 work in progress" error.
  - If the function or method receives a new optional parameter, make it throw a "🚧 work in progress" error if the parameter is set.
  - Even if the goal of the PR is to change the behavior of an existing function or method, do not throw a "🚧 work in progress" error. **KEEP THE EXISTING BEHAVIOR**.
- For WIP tests, put the test's steps from the design doc as-is in a comment inside the body of the "it.todo" test.

# Examples

### WIP class example

```ts
/**
 * @deprecated 🚧 work in progress
 */
class Greetings {
  hello() {
    throw new Error(`🚧 work in progress`);
  }
}
```

### WIP method example

```ts
class Greetings {
  /**
   * @deprecated 🚧 work in progress
   */
  hello() {
    throw new Error(`🚧 work in progress`);
  }
}
```

### WIP component

```ts
/**
 * @deprecated 🚧 work in progress
 */
@Component({
  changeDetection: ChangeDetectionStrategy.OnPush,
  selector: "wm-rules",
  template: `Rules - 🚧 work in progress`,
})
class Rules {
  rules = input.required<Rule[]>();
  ruleSelect = output<Rule>();
}
```

### WIP tests example

Note: test names start in lower case (e.g. "search rules ...").

```ts
import { describe, it } from "vitest";

describe(RuleSearch.name, () => {
  it.todo("search rules without filtering", () => {
    // mount RuleSearch
    // click on first rule
    // assert output was triggered once
  });

  it.todo("...", () => {
    // ...
  });
});
```

