Manusで任意のスキルを実行
ワンクリックで
ワンクリックで
ワンクリックでManusで任意のスキルを実行
始める$pwd:
$ git log --oneline --stat
stars:17
forks:3
updated:2026年2月2日 17:25
SKILL.md
Implement an approved feature file using ATDD workflow with test-first development
Analyze code with Semgrep for security vulnerabilities and code quality issues, then create a prioritized fix plan
Create a new React component following project conventions with PropTypes and test attributes
Create a new feature file for ATDD workflow - must be done BEFORE any implementation
Add a new type of process step to the VSM builder with custom visualization
Create or run simulation features for analyzing work flow through value streams
| name | add-metric |
| description | Add a new calculated metric to the VSM dashboard with test-first development |
| user-invocable | true |
| allowed-tools | Read, Write, Edit, Grep, Glob, Bash |
Add a new calculated metric to the VSM dashboard.
/add-metric <MetricName>
Create a feature file first using /new-feature that describes:
Feature: Flow Efficiency Metric
As a team lead
I want to see flow efficiency percentage
So that I understand how much time is spent on actual work vs waiting
Scenario: Display flow efficiency for a value stream
Given a value stream with the following steps:
| name | processTime | leadTime |
| Development | 60 | 240 |
| Testing | 30 | 120 |
| Deployment | 10 | 40 |
When I view the metrics dashboard
Then I should see flow efficiency of "25%"
Scenario: Flag low flow efficiency as warning
Given a value stream with flow efficiency below 15%
When I view the metrics dashboard
Then the flow efficiency card should show warning status
Scenario: Handle empty value stream
Given an empty value stream map
When I view the metrics dashboard
Then flow efficiency should show "N/A"
src/utils/calculations/{metric}.jssrc/stores/metricsStore.jssrc/components/metrics/{MetricName}Card.jsx// src/utils/calculations/{metric}.js
/**
* Calculate {MetricName} for a value stream map
* @param {Object} vsm - The value stream map
* @returns {Object} - The metric result
*/
export function calculate{MetricName}(vsm) {
if (!vsm.steps || vsm.steps.length === 0) {
return {
value: null,
unit: '%',
status: 'neutral',
displayValue: 'N/A'
};
}
// Perform calculation
const value = /* calculation */;
// Determine status based on thresholds
let status;
if (value > 0.25) {
status = 'good';
} else if (value > 0.15) {
status = 'warning';
} else {
status = 'critical';
}
return {
value,
unit: '%',
status,
displayValue: `${(value * 100).toFixed(0)}%`
};
}
// src/components/metrics/{MetricName}Card.jsx
import PropTypes from 'prop-types';
import { useMetricsStore } from '../../stores/metricsStore';
import MetricTooltip from '../ui/MetricTooltip';
function {MetricName}Card() {
const metric = useMetricsStore((state) => state.{metricName});
const statusClasses = {
good: 'bg-green-50 border-green-200 text-green-800',
warning: 'bg-amber-50 border-amber-200 text-amber-800',
critical: 'bg-red-50 border-red-200 text-red-800',
neutral: 'bg-gray-50 border-gray-200 text-gray-800'
};
return (
<div
className={`metric-card border rounded-lg p-4 ${statusClasses[metric.status]}`}
data-testid="{metric-name}-card"
data-status={metric.status}
>
<MetricTooltip term="{MetricName}">
<h3 className="metric-card__title text-sm font-medium">
{MetricName}
</h3>
</MetricTooltip>
<div className="metric-card__value text-2xl font-bold">
{metric.displayValue}
</div>
</div>
);
}
export default {MetricName}Card;