PHPackages                             semitexa/skins-base - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. semitexa/skins-base

ActiveSemitexa-module[Framework](/categories/framework)

semitexa/skins-base
===================

Framework default skin + Semitexa skin CLI (generate, refine, explain-prompt). Projects generate their own skins into src/skins/; framework ships only the single 'default' reference skin used as fallback.

02↓100%PHP

Since Apr 24Pushed 1mo agoCompare

[ Source](https://github.com/semitexa/semitexa-skins-base)[ Packagist](https://packagist.org/packages/semitexa/skins-base)[ RSS](/packages/semitexa-skins-base/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependenciesVersions (2)Used By (0)

semitexa/skins-base
===================

[](#semitexaskins-base)

Framework default skin + Semitexa skin CLI.

What ships here
---------------

[](#what-ships-here)

**One skin.** `src/Application/Static/skins/default/` — a neutral-gray reference skin (balanced algorithm, seed `#808080`, light mode, default knobs) used as the fallback when no project skin matches. Deliberately minimal — "Times New Roman for skins". All 41 design tokens emitted; all three primitives renderable.

**Three commands** (`src/Console/`):

CommandRole`skins:generate`Generate a new skin (seed mode or `--prompt="…"` LLM mode). Writes to project `src/skins//`.`skins:refine`Iterate an existing skin's knobs (LLM deltas or `--set=name:value`). Reads via SkinDiscovery — refining a framework-shipped skin writes the override to project `src/skins//`.`skins:explain-prompt`Preview LLM resolution without writing any files.Full semantics: [platform-ui/docs/skin-generation.md](../../semitexa-platform-ui/docs/skin-generation.md), [skin-algorithms.md](../../semitexa-platform-ui/docs/skin-algorithms.md), [skin-refinement.md](../../semitexa-platform-ui/docs/skin-refinement.md).

Package boundary
----------------

[](#package-boundary)

PackageOwns`semitexa/platform-ui`Skin **domain**: algorithms (`SkinAlgorithm`), token contract (41 tokens), LLM library (`PromptResolverFactory`, `OutputValidator`, `RefinementResolver`), grammar, primitives.`semitexa/skins-base`CLI **commands** that orchestrate the domain, and the single framework-default skin.`semitexa/theme``SkinDiscovery` — finds skins in both framework (here) and project (`src/skins/`), resolves slugs to URLs.The commands depend on platform-ui (for algorithms + token emitter + LLM resolvers) and theme (for SkinDiscovery / ProjectRoot). platform-ui does **not** depend on skins-base — it's a pure library.

Asset serving
-------------

[](#asset-serving)

Both framework default and project skins serve at the unified URL prefix:

```
/assets/skins//tokens.css

```

The alias is registered at worker boot by `Semitexa\Theme\Runtime\BootProjectSkinsAssetAliasListener` — project first (higher priority), framework second (fallback). When a project skin and a framework skin share a slug, the project wins.

Extending
---------

[](#extending)

Projects never modify this package. To add a new skin, run `skins:generate` in the consumer project — output lands in that project's `src/skins/` and is auto-discovered.

To change the framework default (rare — most projects just override via a project-local `default` skin), regenerate directly against this package:

```
bin/semitexa skins:generate balanced "#808080" --name=tmp-default --write
# then manually move tokens.css + skin.json from src/skins/tmp-default/ into
# vendor/semitexa/skins-base/src/Application/Static/skins/default/
```

The deliberate friction here reflects that the framework default is shared infrastructure, not an everyday edit.

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance60

Regular maintenance activity

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity13

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/e94044da9f4c76cc5cd09ef0c693a68065787e10d0d18edfeedbef3573a9163a?d=identicon)[syntaxwanderer](/maintainers/syntaxwanderer)

---

Top Contributors

[![syntaxwanderer](https://avatars.githubusercontent.com/u/1311643?v=4)](https://github.com/syntaxwanderer "syntaxwanderer (1 commits)")

---

Tags

default-skinscaffoldingsemitexaskinskins-basetheme

### Embed Badge

![Health badge](/badges/semitexa-skins-base/health.svg)

```
[![Health](https://phpackages.com/badges/semitexa-skins-base/health.svg)](https://phpackages.com/packages/semitexa-skins-base)
```

###  Alternatives

[laravel/socialite

Laravel wrapper around OAuth 1 &amp; OAuth 2 libraries.

5.7k104.3M822](/packages/laravel-socialite)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k38.6M289](/packages/laravel-dusk)[pinguo/php-msf

Pinguo Micro Service Framework For PHP

1.7k4.2k](/packages/pinguo-php-msf)[nineinchnick/edatatables

Grid widget for the Yii Framework, wrapper for the DataTables jQuery plugin

173.2k](/packages/nineinchnick-edatatables)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
