uw-unity-feature-scaffold-06adab — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited uw-unity-feature-scaffold-06adab (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Generate a feature module with folders, assembly definitions, and a starter class based on docs/ProjectConfig.yaml.
docs/ProjectConfig.yaml for:project_name — derive root namespace by converting to PascalCase (e.g., "my cool game" → MyCoolGame)folder_strategy — "feature-based" or "type-based"architecture_pattern — "so-first" or "di-first" (informs post-scaffold next steps)mcp.unity_mcp — if true, call refresh_unity after creating filesCombat, PlayerMovement, Inventory).{RootNamespace}.{FeatureName} (e.g., MyCoolGame.Combat).Feature-based (folder_strategy: "feature-based"):
Assets/_Project/Features/{FeatureName}/
├── Scripts/
│ ├── {RootNamespace}.{FeatureName}.asmdef
│ └── {FeatureName}Manager.cs
├── Data/
└── Tests/
└── {RootNamespace}.{FeatureName}.Tests.asmdefType-based (folder_strategy: "type-based"):
Assets/_Project/Scripts/{FeatureName}/
├── {RootNamespace}.{FeatureName}.asmdef
└── {FeatureName}Manager.cs
Assets/_Project/Tests/{FeatureName}/
└── {RootNamespace}.{FeatureName}.Tests.asmdefFile: {RootNamespace}.{FeatureName}.asmdef
{
"name": "{RootNamespace}.{FeatureName}",
"rootNamespace": "{RootNamespace}.{FeatureName}",
"references": [
"GUID:{CoreAsmdefGUID}"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}File: {RootNamespace}.{FeatureName}.Tests.asmdef
{
"name": "{RootNamespace}.{FeatureName}.Tests",
"rootNamespace": "{RootNamespace}.{FeatureName}.Tests",
"references": [
"GUID:{FeatureAsmdefGUID}",
"UnityEngine.TestRunner",
"UnityEditor.TestRunner"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": true,
"precompiledReferences": [
"nunit.framework.dll"
],
"autoReferenced": false,
"defineConstraints": [
"UNITY_INCLUDE_TESTS"
],
"versionDefines": [],
"noEngineReferences": false
}GUID references: Read the GUID from the target .asmdef.meta file (the guid field on line 2). Use GUID: prefix for robustness against renames. Fall back to the string name (e.g., "{RootNamespace}.Core") if the .meta file isn't accessible.
File: {FeatureName}Manager.cs
using UnityEngine;
namespace {RootNamespace}.{FeatureName}
{
public class {FeatureName}Manager : MonoBehaviour
{
}
}This is a minimal entry point. The actual class name and base type should be adjusted to fit the feature — not every feature needs a MonoBehaviour manager.
When Feature B depends on Feature A, add Feature A's asmdef GUID to Feature B's references array. Read the GUID from Feature A's .asmdef.meta file — never modify .meta files directly.
Keep dependencies one-directional. If two features need to communicate bidirectionally, extract shared interfaces or event channels into {RootNamespace}.Core (see uw-scriptable-object-arch for event channel patterns).
uw-unity-test-runner — the test asmdef is already configured.uw-scriptable-object-arch (SO-first) or uw-dependency-injection (DI-first) based on ProjectConfig.yaml → architecture_pattern.uw-unity-editor-tools for custom inspectors or editor windows alongside the feature..asmdef.Assets/_Project/ to avoid Asset Store conflicts..meta files — Unity generates them automatically.{RootNamespace}.{FeatureName}.asmdef (per NAMING_CONVENTIONS.md).ProjectConfig.yaml → mcp.unity_mcp is true, call refresh_unity after creating files. Otherwise, instruct the user to return to Unity Editor for auto-refresh.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.